2010-08-25 63 views
1

我知道如何重新繪製整個窗口,但我不知道如何重新繪製一個窗口的pieace,就像我使用gdi +繪製一個squre比我想改變它的座標,所以我想重新繪製squre不是整個窗口
anyidea? C++重繪窗口的一部分


我也試過這種

RECT rect2; 
rect2.left=0; 
rect2.top=100; 
rect2.right=225; 
rect2.bottom=300; 
InvadiateRect(hwnd, &rect2, false); 

它仍然重繪整個窗口,要做到這一點

回答

1

一種方法是調用InvalidateRect()帶有長方形是大到足以覆蓋兩個的新老位置你移動的廣場。然後Windows將調用您的WM_PAINT處理程序來重新繪製已更改屏幕的區域。

UnionRect()函數有助於計算這個重繪矩形。

+0

我試過wat你建議我但沒有重新工作。我創建了一個帶x和y座標的矩形結構,但仍然重新繪製整個窗口 – Ramilol 2010-08-26 04:18:25

+0

當您調用'BeginPaint()'時,將返回一個包含'rcPaint'成員的'PAINTSTRUCT'結構。您可以通過查看「WM_PAINT」處理程序中的'rcPaint'來限制您繪製的窗口數量。 – 2010-08-26 05:14:21