目录
一、打开图像
void CMFCApplication1Doc::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
//打开文件对话框
CFileDialog Ofd(true);
//判断是否确认打开文件,不打开则返回
if (Ofd.DoModal() != IDOK)return;
//获得文件名称
filename = Ofd.GetPathName();
//获得文件扩展名
extname = Ofd.GetFileExt();
//显示文件名或扩展名-测试
//AfxMessageBox(filename);
如果是bpm格式图像,依次读取图像的文件头、信息头、颜色表、数据
if (extname == "bmp")
{
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
//读文件头
logfile.Read(&bfh, 14);
//读信息头
logfile.Read(&bih, 40);
//读颜色表
for (int i = 0; i < 256; i++)
logfile.Read(&RGB[i], 4);
//读数据
//获得图像宽度和高度
Width = bih.biWidth;
Height = bih.biHeight;
//指针初始化
GIPImage = new unsigned char[Width * Height];
//指针读数据
logfile.Read(GIPImage, Width * Height);
//文件打开标志
fileopen = true;
}
不是bmp图像则不打开
else
{
AfxMessageBox(_T("not bmp file"));
return;
}
}
上述是一些读取操作,执行后不会看到结果,下面写出展示语句
UpdateAllViews(NULL);语句在每一个功能后都要添加,否则不能正常执行功能
//显示文件宽度和高度
CString str;
str.Format(_T("图像大小%d*%d"), Width, Height);
AfxGetMainWnd()->SetWindowText(str);
UpdateAllViews(NULL);
调试
点击文件->打开 选择一个bmp图像,图像成功打开,并且在左上角显示出图像大小
二、图像反色处理
找到资源视图中的菜单
添加图像处理和子目录图像反色
修改图像反色ID 右键图像反色 添加事物处理程序 选择Doc类型
在Doc.cpp文件中找到图像反色函数
void CMFCApplication1Doc::OnReverse()
{
// TODO: 在此添加命令处理程序代码
int i;
for (i = 0; i < Width * Height; i++)
GIPImage[i] = 255 - GIPImage[i];
UpdateAllViews(NULL);
}