|||
void CBitmapView::wtj_paint()
{
CDC *pDC;
pDC=GetDC();
CBitmap wtj_bitmap;
CDC dcMemory;
wtj_bitmap.LoadBitmap(IDB_BITMAP1);
BITMAP bmInfo;
wtj_bitmap.GetObject(sizeof(bmInfo),&bmInfo);
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(&wtj_bitmap);
pDC->BitBlt(100,100, bmInfo.bmWidth,bmInfo.bmHeight, &dcMemory,0,0,SRCCOPY);
ReleaseDC(pDC);
}
其中我还是不大明白,为什么wtj_bitmap.GetObject()函数可以这样用,可以说是把wtj_bitmap的信息copy到了bmInfo中。昨天我都还在想,怎样才能把位图的长和宽的信息取出来!哦解决了!
简单的记一下如何显示位图:
1、声明一个CBitmap对象,并从资源中加位图。
2、创建一个兼容的DC,用CDC的成员函数CreateCompatibleDC。
3、用CDC的成员函数SelectObject将位图选入到兼容DC中。
4、用CDC的成员函数BitBlt来输出位图。
就这样了,一个完整的位图说显示了!
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
如下的改动可以使位图在窗口中全部显示,自动拉伸!
void CBitmapView::wtj_paint()
{
CDC *pDC;
CRect rect;
pDC=GetDC();
CBitmap wtj_bitmap;
CDC dcMemory;
wtj_bitmap.LoadBitmap(IDB_BITMAP1);
BITMAP bmInfo;
wtj_bitmap.GetObject(sizeof(bmInfo),&bmInfo);
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(&wtj_bitmap);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMemory, 0,0, bmInfo.bmWidth,bmInfo.bmHei ght, SRCCOPY);
ReleaseDC(pDC);
}