又是一个GDI+的问题,绘制时闪了一下,就不见了
我的代码是这个样子的:
CDC* pDC=GetDC();
CDC memDC;
CRect winRect;
GetClientRect(winRect);
CBitmap MemBitmap;
// 设备描述表初始化
memDC.CreateCompatibleDC(pDC);
// 建立与屏幕显示兼容的内存显示设备
MemBitmap.CreateCompatibleBitmap(pDC, winRect.Width(), winRect.Height());
// 选取空白位图
memDC.SelectObject(MemBitmap);
memDC.FillSolidRect(0, 0, winRect.Width(), winRect.Height(), RGB(255,255,255));
Graphics graph(pDC->GetSafeHdc());
REAL x = 0.0;
REAL y = 0.0;
//画多张图
for (int i=0;i<m_nPicNum;i++)
{
CString Path = GetFilePath(i);
OpenFile(Path);
Image& image=*m_pBitmap;
CSize showPicSize = GetShowPicSize(image);
REAL width = (REAL)showPicSize.cx;
REAL height = (REAL)showPicSize.cy;
graph.DrawImage(&image, x, y, width, height);
x+=width+3;
}
MemBitmap.DeleteObject();
memDC.DeleteDC();
[解决办法]
我说几点:
1、你的代码里与MemBitmap , memDC 有关的哪些语句都没有任何用处,完全是多余的。你可以全都删掉,代码显得干净一些。
2、你在用
CDC* pDC=GetDC(); 说明你的绘制代码不在onpaint或者onErasebackground(可能有拼写错误,将就看)里面,你说的画的东西一闪,很有可能你在代码里画的哪些东西被onpaint 或者onErasebackground里面的绘制给覆盖了,所以你可以考虑把这些绘制代码放到onpaint 或者onErasebackground 里试一试。
[解决办法]