如何防止GDI +重新绘制油漆上的所有内容?

min*_*ina 3 c# gdi+

我想改变使用GDI +绘制自身的控件的某些部分的颜色,例如,当某些对象被悬停/点击时.

我怎样才能重新绘制必要的部分?当我只需要对其中一些像素进行更改时,重新绘制数千个像素似乎很糟糕.

具体来说,我已经绘制了1到128个矩形,我将需要在各种事件中重新绘制1到128个矩形.我不想重新绘制128个矩形,只能更改为1-127.

我已经读过在不是绘制事件的地方使用绘图代码是一个主意.但是,依靠油漆事件可以做到这一点吗?

Bal*_*nyi 6

您可以使用其中一种Control.Invalidate方法指定要重绘的区域.
然后在Paint事件处理器中,您可以使用e.ClipRectangle属性检查无效区域.