MFC导入并显示BMP图片功能实现

为了保存位图信息及对位图进行处理,MFC提供了一个位图类CBitmap,其右两个向CBitmap类对象装载位图文件信息的成员函数。

BOOL LoadBitmap(LPCTSTR lpszResoutceName);

BOOL LoadBitmap(UNIT nIDResource);

其中,参数lpszResoutceName为资源名称,而nIDResource为资源的表示.

这样,为了使用位图,则需要先定义一个位图类的对象,然后用上面的任意一个成员函数把位图装载到对象中.例如,下面的代码

CBitmap m_Bmp;                     // 定义位图对象

m_Bmp.LoadBitmap(IDB_BITMAP);       //表示为IDB_BITMAP的位图装入对象


在文档类声明中,声明如下对象和数据成员.

// 属性
public:
 CBitmap m_Bitmap;
 int m_nWidth;
 int m_nHeight;


在文档类的构造函数中装载位图和获得位图的尺寸.

CMy006Doc::CMy006Doc()
{
 // TODO: 在此添加一次性构造代码
 BITMAP BM;
 m_Bitmap.LoadBitmap(IDB_BITMAP1);
 m_Bitmap.GetBitmap(&BM);
 m_nWidth = BM.bmWidth;
 m_nHeight = BM.bmHeight;

}

 

在视图类的OnDraw函数中,显示位图

void CMy006View::OnDraw(CDC* pDC)// 注意此处,默认情况下 pDC是被注释掉的,我都被害惨了..
{
 CMy006Doc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);

//=======================================================================
 CDC MemDC;
 MemDC.CreateCompatibleDC(NULL);
 MemDC.SelectObject(pDoc->m_Bitmap);
 pDC->BitBlt(0,0,pDoc->m_nWidth,pDoc->m_nHeight,&MemDC,0,0,SRCCOPY);
//=======================================================================

 // TODO: 在此处为本机数据添加绘制代码
}


你可能感兴趣的:(C++,MFC)