0

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

在此处输入图像描述

已经尝试覆盖 OnResize

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

2 回答 2

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);
}

如果您仍然有任何问题,请发布您的 repaintingMyStuffHere 方法。

于 2012-09-07T13:51:10.907 回答
0

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

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

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

this.DoubleBuffered = true;
于 2016-02-07T19:59:12.730 回答