我有一个简单的 WinForms 应用程序,它可以绘制一些彩色矩形。但是,当调整窗口大小时,它没有正确更新。
已经尝试覆盖 OnResize
protected override void OnResize(EventArgs e)
{
repaintingMyStuffHere();
}
尝试这个:
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 方法。
为了让您的表单/组件呈现属性并帮助提高性能,您需要首先覆盖该OnResize()
方法以使其使表单/组件无效:
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}
然后(可选,但建议减少闪烁)将表单/组件DoubleBuffered
属性设置为 true:
this.DoubleBuffered = true;