我目前正在使用GDI绘制图形,但我需要能够重绘整个桌面/屏幕。我的图形是在屏幕上绘制的,但是当我移动绘制的像素时,它将成为一条线,因为我没有重绘屏幕(窗户不是)。我需要一些东西来强制它重绘整个屏幕,我尝试了以下方法:
UpdateWindow(GetDesktopWindow() );
InvalidateRect( GetDesktopWindow(), NULL, TRUE );
SendMessage( GetDesktopWindow(), WM_PAINT, NULL, NULL );
它们似乎都不起作用,我只需要整个屏幕重绘。
答案 0 :(得分:2)
如果您仍想强制重新绘制整个桌面,可以使用
RECT rect;
::GetClientRect(::GetDesktopWindow(), &rect);
::RedrawWindow(::GetDesktopWindow(), &rect, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN);
答案 1 :(得分:1)
最好的方法可能是保存先前的像素状态/颜色,并在移动像素时将其恢复。重新绘制整个屏幕似乎太费力了,而且浪费了大量的资源。
答案 2 :(得分:1)
您可以在hWnd设置为NULL的情况下使用RedrawWindow。