解决位图失真-SetStretchBltMode
当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真:
<br />BOOL CGraphicView::OnEraseBkgnd(CDC* pDC) <br />{<br /> // TODO: Add your message handler code here and/or call default<br /> CBitmap bitmap;<br /> bitmap.LoadBitmap(IDB_BITMAP2);<br /><br /> BITMAP bmp;<br /> bitmap.GetBitmap(&bmp);<br /><br /> CDC dcCompatible;<br /> dcCompatible.CreateCompatibleDC(pDC);<br /><br /> dcCompatible.SelectObject(&bitmap);<br /><br /> CRect rect;<br /> GetClientRect(&rect);<br /> pDC->SetStretchBltMode(COLORONCOLOR); //设置在指定设备内容中的伸展模式。解决失真问题。<br /> <br /> //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);<br /> pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);<br /><br /> return TRUE;<br />}
转载请注明:woyigui's blog [http://www.woyigui.cn/]
本文标题:解决位图失真-SetStretchBltMode
本文地址:http://www.woyigui.cn/2008/10/19/VC-SetStretchBltMode/
最新评论