我正在尝试覆盖.NET Compact Framework中 windows 窗体的OnPaint事件。
到目前为止,我能够绘制带有渐变、圆角矩形等的控件,而这些控件通常无法使用常规控件。
但是,当我想让控件不可见时,我遇到了问题。现在,我所做的是重新绘制除那些不可见的控件之外的所有控件。由于需要一些时间,因此会导致一些闪烁。
有谁知道windows如何处理绘制“不可见”控件?或者你能建议任何关于如何实现这一目标的算法或方法。
我正在尝试覆盖.NET Compact Framework中 windows 窗体的OnPaint事件。
到目前为止,我能够绘制带有渐变、圆角矩形等的控件,而这些控件通常无法使用常规控件。
但是,当我想让控件不可见时,我遇到了问题。现在,我所做的是重新绘制除那些不可见的控件之外的所有控件。由于需要一些时间,因此会导致一些闪烁。
有谁知道windows如何处理绘制“不可见”控件?或者你能建议任何关于如何实现这一目标的算法或方法。
你应该做几件事。
OnPaint
。绘制到后台缓冲区,并在最后将其绘制到 Graphics。OnPaintBackground
并让它什么都不做。如果您将单个控件更改为“不可见”,那么您将更改它并使它的边界矩形无效。在OnPaint
您进行绘图的过程中,省略了基于 Visibility 属性的“不可见”控件。只有剪辑区域会得到更新。您甚至可以通过检查传入的剪辑区域OnPaint
并只费心绘制该区域的绘制逻辑来更进一步。不过,这有点复杂,而且通常不是必需的。
作为替代方案,是否可以在适当的控件上调用Invalidate()方法的任何重载以减少需要重新绘制的控件总数?