在自定义控件上绘制新内容之前,我该怎么做才能清除我绘制的所有内容?

时间:2011-08-02 18:58:25

标签: c# .net windows gdi+ gdi

我在自定义控件上绘制了图像。

但每当我在自定义控件中绘制另一个图像时,它会覆盖或绘制 over 它。在绘制新内容之前,我可以清除所有绘制的内容吗?

我工作的解决方案:

S1> 我使用了 this.Invalidate()来调用paint事件,但它没有解决问题,因为我已经有一些代码导致相同的透支问题。

S2> 使用 Graphics类的清除方法解决了这个问题。 我正在使用此代码清除自定义控件中的所有内容

//in my custom controls paint method
    Graphics g = this.CreateGraphics();
    g.Clear(this.ForeColor);

但它闪烁了很多!这就是为什么我使用DoubleBuffered属性而现在它没有显示任何东西!

1 个答案:

答案 0 :(得分:1)

闪烁问题现已解决。 实际上问题在于我创建Graphics对象的方式。我使用此代码创建Graphics对象:

Graphics g = this.CreateGraphics();

这不仅导致了闪烁问题,而且DoubleBuffered属性也无效。

我们必须use Paint event's e.Graphics来创建Graphics对象然后绘制。

因此,现在我的DoubleBuffered财产正在履行职责..