Eastmou nt 制作 第六课 bmp 图片采样处理 <一>.采样处理原理 该工程所有的处理都基于24 位的bmp 格式图片的处理,24 为表示biBitCount=24:1个像素占3个字节(red、green、blue)。 如图一张 512*512 的原图,保持灰度级 256 不变后的各种采样。 输入采样坐标:如 16*16,它的含义是: 原图512*512 像素,现在组成一个新的图片为16*16 像素, (512/16=32,512/16=32)则每 32*32 组成一个新的区域。共有这种区域16*16 个,采样的方法有2 种: a.把这个32*32 区域全部赋值成左上角那个像素,这样图片的大小不变,困难在于赋值要 4 层循环。(项目中采用的就是这种方法) b.把这个32*32 区域的左上角取出来,组成一个新的图片,共有16*16个像素,这张图片的大小要变小,只有16*16 个像素。但难点在于同时要把 bmp 文件头中的图片大小、信息头中的长宽像素改变、偏移量等信息更新。 Eastmou nt 制作 举例说明采样:(工程为处理剩余部分区域) 难点:还未处理剩余部分的采样。 Eastmount 制作 <二>.采样程序实现 第一步:设置菜单栏 a.将试图切换到ResourceView界面--选中Menu--在IDR_MAINFRAME中添加菜单“采样”--双击它在菜单属性中选择“弹出”; b.在“采样”的子菜单中添加:属性为默认属性。 ID_CY--图片采样。 c.建立类导向:查看--建立类导向(Ctrl+W)--CBmpDrawView(类名)--ID_CY--COMMAND(Messages)--默认成员函数名。 产生 void CBmpDrawView::OnCy()采样函数。 Eastmount 制作 第二步:设置对话框 a.将试图切换到ResourceView界面--选中Dialog,右键鼠标新建一个Dialog,并新建一个名为:IDD_TEST_CY。设置成下图对话框: 鼠标右键对话框—属性--设置成 IDD_TEST_CY--图片采样 静态文本:(X)IDC_STATIC_X--X 坐标;(Y)IDC_STATIC_Y--Y 坐标 编辑框:(X)IDC_EDIT_X;(Y)IDC_EDIT_Y。确定为默认按钮。 b.在对话框资源模板空白区域双击鼠标—Create a new class 创建一个新类--命名为CTestCYDlg。会自动生成它的.h 和.cpp 文件。 类向导 Ctrl W--类名:CTestCYDlg--CTestCYDlg(IDs)—WM_INITDLAOG 建立这个函数可以用于初始化。 c.打开类向导 Ctrl+W--选择 MemberVariables 页面 类名:CtestCYDlg--Add Variables--设置成: IDC_EDIT_X--int--m_xPlace 和 DC_EDIT_Y--int--m_yPlace。 d.在 View.cpp 中添加采样的头文件 #include "TestCYDlg.h"。 Eastmou nt ...