Domanda

Fare un progetto in Win32 in C ++, tentando di raddoppiare l'immagine da disegnare, ma sto ottenendo uno schermo nero con le bitmap corrette disegnate su di esso. Questo sta anche causando la mia condizione WM_MouseMove, che trascina una bitmap insieme al cursore per non disegnare la bitmap. Il codice per la vernice è sotto: Paint () è chiamato in WNDPROC sotto WM_Paint, Scroll è la posizione della barra di scorrimento, non utilizzata finora.

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;
}
È stato utile?

Soluzione

Devi riempire la bitmap con qualunque sia il tuo colore di sfondo prima di disegnare l'altra tua grafica. Se la memoria mi serve correttamente, le bitmap sono piene di nero per impostazione predefinita quando vengono create.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top