如何在C#中重绘特定的控件矩形?

时间:2014-01-17 08:19:21

标签: c# winforms winapi controls paint

从我的程序逻辑中我知道我需要在简单的WinForms top_left = {x=32,y=32}的{​​{1}}和bottom_right = {x=64,y=64}之间重绘矩形。我不想重绘整个客户区,而只是其中的一部分(性能原因)。 WinApi无法分辨哪些部分必须重绘,我必须告诉它。那我怎么能这样做呢?

每次需要此功能时,要重绘的矩形都不同。

我想:

  • 发送Control消息(但我无法弄清楚如何传输矩形,因为当此消息通常到达时,wParam和lParam始终为0)
  • ...

(希望这不重复。如果是,我会删除。)

1 个答案:

答案 0 :(得分:3)

使用接受矩形的Invalidate方法。

control.Invalidate(new Rectangle(32, 32, 32, 32));
control.Update(); //to invalidate control immediately

它使特定的控制区域无效,该控制区域将在下一次喷涂操作中重新粉刷。