|
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);} |
|