【问题标题】:disable background painting禁用背景绘画
【发布时间】:2011-05-12 17:59:18
【问题描述】:

我正在使用 Visual Studio 2008

我有一个显示已处理图像的控件。每当更改处理参数时,我想更新这张图片,但不会闪烁。如果我可以在我绘画之前阻止窗户消隐该区域,那么闪烁应该大部分消失。

问题是,如何做到这一点?

类似: this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 应该这样做,除了这需要我将 TableLayoutPanel 控件子类化(我花了一个小时试图做的事情),并且我所取得的成就没有任何效果。

有没有一种简单的方法可以关闭控件的背景绘制?

【问题讨论】:

  • 您是否将控件的 DoubleBuffered 属性设置为 true?

标签: c# paint flicker


【解决方案1】:

您是否尝试过覆盖OnPaintBackground 事件并且什么都不做?

protected override void OnPaintBackground(PaintEventArgs pevent)
{
}

【讨论】:

  • 有效。现在我只需要弄清楚如何在不搞砸表单编辑器的情况下对控件进行子类化!
【解决方案2】:

试试这个:

this.SuspendLayout();
// do update here
this.ResumeLayout();

澄清:this 是表格

【讨论】:

  • 我只是在更新我想要绘制的图像。我实际上并没有更改表单的任何内容,只是使其无效,以便使用新图像重新绘制。问题是背景在我绘画之前就被清除了,所以它会闪烁。
  • 我明白了。对不起,我的困惑。
猜你喜欢
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多