调整大小wpf元素主机时的黑色闪回

时间:2013-09-11 07:30:10

标签: c# winforms user-controls elementhost

我的WPF UserControl显示为Winform Element Host

当我快速更改屏幕尺寸或调整屏幕大小时,我会在后台看到黑色闪回,直到UserControl达到合适的大小。

我在几个地方看过它。

我读过的所有地方都说它只发生在 UserControl加载中,并相应地提供解决方案。

我见过的一个问题是调整大小。但是那里提供的解决方案也是加载

Black background on resizing elementhost

我尝试调整屏幕大小以执行以下操作:UserControl.CreateGraphics ();,它不会像上面的答案那样留下黑线。

我想这是因为我在Resize中使用它而不是在Load上。

此外,我找不到任何东西。

如果有人遇到这个并找到了解决方案,我很乐意回答。

2 个答案:

答案 0 :(得分:0)

在开发具有许多控件的窗体的Windows应用程序时,我们通常会遇到闪烁问题。摆脱这种闪烁的一种非常巧妙的方法是对整个表格及其子控件进行双重缓冲。但是,这不会加速控制绘画,但它会保持屏幕一段时间,只显示更新的屏幕而不是闪烁。要实现这一点,我们需要启用WS_EX_COMPOSITED标志。只需将以下代码添加到表单的代码中即可。

C#:

protected override CreateParams CreateParams
{
   get 
    {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000; 
    // Turn on WS_EX_COMPOSITED
   return cp;
   }
}

VB .net:

Protected Overrides ReadOnly Property CreateParams() As CreateParams
 Get
    Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H2000000  
    Return cp 
  End Get
 End Property

答案 1 :(得分:-1)

帮助我最终跟随代码行(Winform):

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