2010-08-25 66 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