我有winforms控件可以在 OnPaint 方法中绘制复杂的UI。 在控件的每个属性中调用 Invalidate 方法。
public new Color BackColor
{
get
{
return backColor;
}
set
{
backColor= value;
this.Invalidate();
}
}
如果更改了少量属性,仅调用无效方法会更有效吗?
例如:
// remove from properties Invalidate call and call it once after set:
this.BackColor=Red;
this.ForeColor=Blue;
this.BorderColor=Gray;
this.Invalidate();
答案 0 :(得分:1)
你只需要调用一次invalidate()。
答案 1 :(得分:1)
仅调用一次Invalidate并不是更有效,因为一旦使表单无效,在绘制窗口之前将忽略对Invalidate的额外调用。 (更有效的是不要不必要地调用Invalidate,但是不必要的呼叫的成本非常低)
如果您想提高效率,请查看如何使您的Paint处理程序不那么复杂。此外,如果只需要重绘部分显示,您可能只能使显示区域的一部分无效,并且您的Paint处理程序只能绘制其剪辑矩形内可见的内容,这可能会显着减少您的工作量更改属性时更新屏幕。