我在自定义控件上绘制了图像。
但每当我在自定义控件中绘制另一个图像时,它会覆盖或绘制 over 它。在绘制新内容之前,我可以清除所有绘制的内容吗?
我工作的解决方案:
S1> 我使用了 this.Invalidate()来调用paint事件,但它没有解决问题,因为我已经有一些代码导致相同的透支问题。
S2> 使用 Graphics类的清除方法解决了这个问题。 我正在使用此代码清除自定义控件中的所有内容
//in my custom controls paint method
Graphics g = this.CreateGraphics();
g.Clear(this.ForeColor);
但它闪烁了很多!这就是为什么我使用DoubleBuffered属性而现在它没有显示任何东西!
答案 0 :(得分:1)
闪烁问题现已解决。 实际上问题在于我创建Graphics对象的方式。我使用此代码创建Graphics对象:
Graphics g = this.CreateGraphics();
这不仅导致了闪烁问题,而且DoubleBuffered
属性也无效。
我们必须use Paint event's e.Graphics
来创建Graphics对象然后绘制。
因此,现在我的DoubleBuffered
财产正在履行职责..