我正在尝试使用C++、Windows API和GDI+构建一个非常简单的图形应用程序。在第一次尝试构建应用程序时,出现了严重的闪烁问题,因此这段代码尝试使用双缓冲,但失败了。
当尝试使用GDI+ Graphics::DrawCachedBitmap将某些东西绘制到后台缓冲区时,位图呈黑白双色。
LoadBitmapRes从EXE资源中创建一个CachedBitmap; 这个函数可以与单缓冲兼容。
代码有什么问题吗?先谢谢了!
全局:
CachedBitmap* fish;
HDC hdc;
HDC hdcBuf;
HBITMAP hbmpBuf;
Graphics* gfxBuf;
WM_CREATE:
hdc = GetDC(hwnd);
hdcBuf = CreateCompatibleDC(hdc);
hbmpBuf = CreateCompatibleBitmap(hdcBuf, 640, 480);
SelectObject(hdcBuf, hbmpBuf);
gfxBuf = Graphics::FromHDC(hdcBuf);
fish = LoadBitmapRes(gfxBuf, MAKEINTRESOURCE(FISH2), "SPRITE");
WM_PAINT:
HDC temp = BeginPaint(hwnd, &ps);
gfxBuf->DrawCachedBitmap(fish, x, y);
BitBlt(temp, 0, 0, 640, 480, hdcBuf, 0, 0, SRCCOPY);
EndPaint(hwnd, &ps);