我正在尝试覆盖OnPaintwindows窗体中的事件.NET 紧凑框架.
到目前为止,我已经能够使用渐变、圆角矩形等来绘制控件,而这通常是常规控件无法实现的。
但是,当我想让控件不可见时,我遇到了问题。现在,我所做的就是重新绘制除那些不可见控件之外的所有控件。由于需要一些时间,因此会导致一些闪烁。
有谁知道Windows如何处理绘制“不可见”控件?或者你能建议任何关于如何实现这一目标的算法或方法吗?
您应该做几件事。
- 不要直接绘制给您的 Graphics 对象
OnPaint
。绘制到后台缓冲区,然后将其绘制到最后的图形。
- 覆盖
OnPaintBackground
并让它什么都不做。
- 尽可能仅使发生变化的区域无效,而不是使整个屏幕无效,以保持剪切区域较小
如果您将单个控件更改为“不可见”,那么您将更改它并使它的边界矩形无效。在OnPaint
您将进行绘图,省略基于“可见性”属性的“不可见”控件。只有剪切区域才会更新。您甚至可以进一步检查传入的剪辑区域OnPaint
并且只需要费心绘制逻辑即可绘制该区域。但这有点复杂,而且通常不是必需的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)