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

本文关键字:黑色 闪回 小时 wpf 元素 主机 调整 | 更新日期: 2023-09-27 18:30:50

我有一个WPF UserControlWinform显示为Element Host

当我快速更改屏幕大小或调整屏幕大小时,我在背景中看到黑色闪回,直到 UserControl 达到适当的大小。

我在几个地方读到了它。

我读到的所有地方都说它只发生在用户控制负载中,并相应地带来解决方案。

我看到的一个问题正在谈论它发生在 Resize 上。但是那里提供的解决方案也适用于加载

调整元素主机大小的黑色背景

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

我想这是因为我在调整大小而不是加载中使用它。

此外,我什么也找不到。

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

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

在开发具有许多控件的窗体的 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

最终对我有帮助的是以下代码行(Winform):

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