我先创建了一个内存DC;先在内存DC绘制一个背景色图片(不透明的),然后再在内存DC用:
Graphics grapic(hDc);
Image image(L"d:\\2.png",FALSE);
grapic.DrawImage(&image, 0.0f, 0.0f, nWidth, nHeight);
最后把内存DC复制到视图上,但是发现,滚动滚动条的时候还是出现一些闪烁.我想把前景色和背景色单独拉出进行双缓冲,然后在复制到内存DC中.但是使用下面的方法却发现却后前景色背景是黑色,有什么办法解决? CDC MemDC;
CBitmap MemBitmap;
//创建兼容DC
MemDC.CreateCompatibleDC(NULL); int nWidth = 154;
int nHeight = 154;
int nX = 10;
int nY = 100; //创建底板位图
MemBitmap.CreateCompatibleBitmap(pMemDc,nWidth,nHeight);
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.SetBkColor(TRANSPARENT); HDC hDc = MemDC.GetSafeHdc();
Graphics grapic(hDc);
Image image(L"d:\\2.png",FALSE);
grapic.DrawImage(&image, 0.0f, 0.0f, nWidth, nHeight); pMemDc->StretchBlt(nX, nY, nWidth, nHeight, &MemDC, 0, 0, nWidth, nHeight, SRCCOPY); //绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.SelectObject(pOldBit);
MemDC.DeleteDC();
Graphics grapic(hDc);
Image image(L"d:\\2.png",FALSE);
grapic.DrawImage(&image, 0.0f, 0.0f, nWidth, nHeight);
最后把内存DC复制到视图上,但是发现,滚动滚动条的时候还是出现一些闪烁.我想把前景色和背景色单独拉出进行双缓冲,然后在复制到内存DC中.但是使用下面的方法却发现却后前景色背景是黑色,有什么办法解决? CDC MemDC;
CBitmap MemBitmap;
//创建兼容DC
MemDC.CreateCompatibleDC(NULL); int nWidth = 154;
int nHeight = 154;
int nX = 10;
int nY = 100; //创建底板位图
MemBitmap.CreateCompatibleBitmap(pMemDc,nWidth,nHeight);
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.SetBkColor(TRANSPARENT); HDC hDc = MemDC.GetSafeHdc();
Graphics grapic(hDc);
Image image(L"d:\\2.png",FALSE);
grapic.DrawImage(&image, 0.0f, 0.0f, nWidth, nHeight); pMemDc->StretchBlt(nX, nY, nWidth, nHeight, &MemDC, 0, 0, nWidth, nHeight, SRCCOPY); //绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.SelectObject(pOldBit);
MemDC.DeleteDC();
2.TransparentBlt把黑色做成透明看看