我有一组自定义控件和几何对象列表,我需要在同一个句柄上绘制。
我覆盖OnPaint
程序,将base.OnPaint(e)
放在第一行,然后开始绘制几何对象(通过e.Graphics.DrawLine
等)。
这些都在锁定列表中并且在一段时间后衰退。
自定义控件也可以在窗口移动。
现在除了这个有趣的事实之外,这几乎按预期工作:
几何形状仅在控件沿其布局移动之后显示。
我能够在一个小环境中重现这一点:PASTEBIN
我试过刷新图形对象;保存/恢复;改变剪辑。 似乎没什么用。
我猜测一旦控制存在,区域只会失效并重新绘制。但是我怎么能强迫他们被吸引呢?
答案 0 :(得分:1)
Control.Invalidate将告诉框架需要重新绘制控件。它会自动执行此操作以重新绘制控件,例如,鼠标遮住了其中的一部分,但它只会重绘鼠标所覆盖的小部分(因此为什么最终会使用"(重新)绘制鼠标效果。同样移动一个窗口会强制它重绘,就像用另一个窗口覆盖它然后再移开那个窗口一样。
但是如果你正在做一堆自定义绘画,你需要通过自己调用Invalidate
来让它知道需要重新绘制控件。