所以,我知道人们在不同的帖子上谈论双缓冲,但每当我尝试它时,我都会得到一个黑屏!这是因为我看到的示例(我需要示例)不像我那样编程 - 就像使用不同的库一样。我现在只用。无论如何,这是严重闪烁的初始程序片段:
void drawRed (HDC hdc)
{
HDC hdcMemory;
hdcMemory = CreateCompatibleDC(hdc);
while (1==1){
SelectObject(hdcMemory, redmask);
BitBlt(hdc, 132, 132, 128, 128, hdcMemory, 0, 0, SRCAND);
SelectObject(hdcMemory, red);
BitBlt(hdc, 132, 132, 128, 128, hdcMemory, 0, 0, SRCPAINT);
}
DeleteDC(hdcMemory);
}
我看了看并尝试了这个:
void drawRed (HDC hdc)
{
HDC hDC = GetDC(hnd);
HDC hdcMemory;
hdcMemory = CreateCompatibleDC(hdc);
HDC memDC = CreateCompatibleDC(hDC);
HBITMAP hMemBmp = CreateCompatibleBitmap(hDC,100,100);
HBITMAP hOldBmp = (HBITMAP)SelectObject(memDC,hMemBmp);
SelectObject(hdcMemory, hbmMem);
BitBlt(hDC, -100, -100, 128, 128, memDC, 0, 0, SRCAND);
SelectObject(hdcMemory, red);
BitBlt(hDC, -100, -100, 128, 128, memDC, 0, 0, SRCPAINT);
SelectObject(hdcMemory, red);
BitBlt(hDC, 132, 132, 128, 128, memDC, 0, 0, SRCCOPY);
DeleteDC(hdcMemory);
}
这只是显示一个黑匣子。我不知道我应该怎么做,所以你能把原来的代码块改成双缓冲吗?谢谢!
我使用 dev-c++ ide。