为了保存位图信息及对位图进行处理,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: 在此处为本机数据添加绘制代码
}