У меня есть приложение win32, и я хочу нарисовать линию, перетаскивая мышь. Я также использую двойную буферизацию, но проблема в том, что она рисует несколько линий на пути мыши. Вот мой код для рисования:
hdc = BeginPaint(hWnd, &ps);
hdcBack = CreateCompatibleDC(hdc);
GetClientRect(hWnd, &windowRect);
backBuffer = CreateCompatibleBitmap(hdc, windowRect.right, windowRect.bottom);
SelectObject(hdcBack, backBuffer);
FloodFill(hdcBack, 0, 0, RGB(255, 255, 255));
BitBlt(hdcBack,0,0,windowRect.right,windowRect.bottom,hdc,0,0,SRCCOPY);
color = RGB(rand() % 255, rand() % 255, rand() % 255);
hBrush = CreateSolidBrush(color);
SelectObject (hdcBack, hBrush);
MoveToEx(hdcBack,x1,y1,NULL); //x1,y1,x2,y2 are the initial click point and the current position of the mouse when keeping the left button down and dragging
LineTo(hdcBack,x2,y2);
BitBlt(hdc, 0, 0, windowRect.right, windowRect.bottom, hdcBack, 0, 0, SRCCOPY);
DeleteObject(hBrush);
DeleteDC(hdcBack);
DeleteObject(backBuffer);
EndPaint(hWnd, &ps);
Я также пытался не копировать фон в буфер до рисования линии, и он правильно рисует линию, но когда я рисую новую линию, ранее нарисованная линия исчезает.
Итак, как я могу нарисовать несколько линий с двойной буферизацией и сохранить предыдущие нарисованные линии?