C# 如何预防GDI+;从油漆上重新画所有的东西?
我想更改使用GDI+绘制自身的控件的某些部分的颜色,例如当某些对象悬停/单击时 如何仅重新绘制必要的部分?当我只需要对其中的几个像素进行更改时,重新绘制数千像素似乎很糟糕 具体来说,我已经绘制了1到128个矩形,我需要在各种事件中重新绘制1到128个矩形。我不想为了只修改1-127而重新绘制128个矩形 我曾读到,在非绘制事件的地方使用绘图代码是一个坏主意。但是,依赖绘制事件时是否可以执行此操作?您可以使用其中一种方法指定要重绘的区域。C# 如何预防GDI+;从油漆上重新画所有的东西?,c#,gdi+,C#,Gdi+,我想更改使用GDI+绘制自身的控件的某些部分的颜色,例如当某些对象悬停/单击时 如何仅重新绘制必要的部分?当我只需要对其中的几个像素进行更改时,重新绘制数千像素似乎很糟糕 具体来说,我已经绘制了1到128个矩形,我需要在各种事件中重新绘制1到128个矩形。我不想为了只修改1-127而重新绘制128个矩形 我曾读到,在非绘制事件的地方使用绘图代码是一个坏主意。但是,依赖绘制事件时是否可以执行此操作?您可以使用其中一种方法指定要重绘的区域。 然后在Paint event hander中,您可以使用属
然后在Paint event hander中,您可以使用属性检查无效区域。简单的方法是使用自己的绘制例程将每个“矩形”设置为控件。然后有另一个容器类型控件,它“知道”矩形控件是如何拥有的。这在Windows中已经通过PaintEventArgs.ClipRectangle属性进行了大量优化。在该矩形外绘制的任何内容都会很快完成,而不会出现燃烧循环。只需使用Invalidate(Rectangle)进行设置。带有矩形的Invalidate()非常完美,谢谢~