CPaintDC dc(this);
CRect rcClient;
CDC MemDC;
CBitmap* pOldBitmap;
BITMAP bm;
int nStretchMode;
GetClientRect(&rcClient);
bm.GetBitmap(&bm);
MemDC.CreateCompatibleDC(&dc);
pOldBitmap = MemDC.SelectObject(&m_bitmap); //m_bitmap在其它地方装入的背景位图
//设置缩放模式,防止拉伸后画面失真
nStretchMode = dc.SetStretchBltMode(HALFTONE);
//绘制到窗口
dc.StretchBlt(0, 0, rcClient.Width(), rcClient.Height(), &MemDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
MemDC.SelectObject(pOldBitmap);
MemDC.DeleteDC();
dc.SetStretchBltMode(nStretchMode);
本文介绍了一种使用MFC进行高效绘图的方法。通过创建兼容设备上下文(MemDC)并选择背景位图,利用StretchBlt函数将位图按窗口大小缩放绘制,有效避免了画面失真。最后还原了原始的设备上下文状态。

766

被折叠的 条评论
为什么被折叠?



