WinForms GDI渲染无法正确重新绘制

时间:2012-08-31 08:40:28

标签: c# .net winforms gdi

我有一个简单的WinForms应用程序,它绘制一些彩色矩形。 但是,当窗口调整大小时,它没有正确更新。

enter image description here

已经尝试覆盖OnResize

protected override void OnResize(EventArgs e)
{
        repaintingMyStuffHere();
}

2 个答案:

答案 0 :(得分:1)

试试这个:

protected override void OnResize(EventArgs e)
{
     this.Invalidate();
     base.OnResize(e);
}

protected override void OnPaint(PaintEventArgs e) {
{
     base.OnPaint(e);
     repaintingMyStuffHere(e.Graphics);
}

如果您仍有问题,请尝试设置以下控制方式:

public MyClass() {
    this.SetStyle(ControlStyles.AllPaintingInWmPaint | 
                    ControlStyles.OptimizedDoubleBuffer | 
                    ControlStyles.ResizeRedraw | 
                    ControlStyles.UserPaint | 
                    ControlStyles.ResizeRedraw, 
                    true);
}

如果您仍然有任何问题,请发布您的重新绘制MyStuffHere方法。

答案 1 :(得分:0)

要使表单/组件呈现属性并帮助提高性能,您需要首先覆盖OnResize()方法,使其使表单/组件无效:

protected override void OnResize(EventArgs e)
{
    base.OnResize(e);
    this.Invalidate();
}

然后(可选,但建议减少闪烁)将表单/组件DoubleBuffered属性设置为true:

this.DoubleBuffered = true;