文档介绍:详解用VC实现bmp位图的打开
2008-04-24 16:34
详解用VC实现bmp位图的打开
我最近在学VC++数字图像处理,作为一个初学者,万里长征的第一步当然是打开一幅图像,这几天一直在看怎么实现这一功能,虽说简单,但是如果这一步不能做到,那么下面也就无法进行了,所以我总结了一下这个过程,写出来供大家参考。也希望大家多多批评啊。
这里我就不想介绍关于位图的理论内容了,只是写一下实现的部分。
创建一个SDI,工程名Test,“隐藏工具栏”和“打印和打印预览”取消了,不用那么复杂,简单点就行
创建两个菜单:
Caption: 打开       ID: ID_FILE_OPEN
Caption: 显示原图   ID: IDM_YUANTU
右键打开菜单,建立类向导,在CTestDoc类中,MAND响应,生成OnFileOpen函数,代码如下:
void CTestDoc::OnFileOpen()
{
    // TODO: Add mand handler code here
    CFileDialog fileDlg(TRUE);//创建一个CfileDialog类对象fileDlg,第一个参数TRUE为打开对话框,若为FALSE,则为另存为
    ="图片打开对话框";//设置打开对话框的标题
    ="BMP Files(*.bmp)\0*.bmp\0\0";//设置打开的文件类型
    if(IDOK== ())//这个语句有两层意义,()作用是弹出CPortDlg对话框,()==IDOK是你点击了对话框上的OK按钮就是说你同时做了上述两件事时就执行if语句后面的程序。
    ("%s",());//将完整路径通过Format函数以字符串类型存入filename中
★(filename); //注意这里CDib不是类,而是CDib类的对象,对象名称也为CDib,千万不要弄混,类不能直接调用成员函数,而类的对象则可以调用
}
其中,注意在CTestDoc类中,添加一个变量filename,Cstring类型,该变量作用是保存所指定的文件的文件完整路径。
注意最后一行★。这一句代码用来实现文件的读取(不含显示)。这里用到了CDib类的对象CDib,#include “”,并且在CTestDoc类中添加这个对象,类型CDib,变量名称CDib。然后执行CDib类的成员函数LoadFile来读取文件。
这是一个处理DIB位图的专用类,封装了一些相关的函数与变量,基类选为CObject类。
:
class CDib : public CObject
{
public:
    RGBQUAD* m_pRGB;
    BYTE* m