Win32 Double Buffering рисунок черным фоном - PullRequest
3 голосов
/ 16 января 2012

Выполнение проекта в win32 на c ++, попытка создать двойной буфер буферизованного изображения, но я получаю черный экран с правильными растровыми изображениями, нарисованными поверх него.Это также вызывает мое условие WM_MOUSEMOVE, которое перетаскивает растровое изображение вместе с вашим курсором, чтобы не рисовать растровое изображение.Код для рисования ниже: paint () вызывается в wndproc под WM_PAINT, scroll - это положение полосы прокрутки, которая до сих пор не использовалась.

int paint(HWND hWnd, HINSTANCE hInst, RECT clientRect, std::vector<Measure> *measures, int scroll)
{
int x = 90;
hdc = BeginPaint(hWnd, &ps);
hdcmem = CreateCompatibleDC(hdc);
HBITMAP hbmScreen = CreateCompatibleBitmap(hdc, clientRect.right, clientRect.bottom);
SelectObject(hdcmem,hbmScreen); 
/*these functions just create the bitmaps into hdcmem*/
drawStaff(hWnd, hInst, clientRect, x, 0);
drawKey(hWnd, hInst, clientRect, x, (*measures)[0], 0);
drawTime(hWnd, hInst, clientRect, x, (*measures)[0], 0);
drawNotes(hWnd, hInst, clientRect, measures, x);
    BitBlt(hdc, 0, 0, clientRect.right, clientRect.bottom, hdcmem, 0, 0, SRCCOPY);
ReleaseDC(hWnd, hdcmem);
return 0;
}

1 Ответ

3 голосов
/ 16 января 2012

Вам нужно сначала заполнить растровое изображение любым цветом фона, прежде чем рисовать другую графику. Если память мне не изменяет, по умолчанию растровые изображения заполняются черным.

...