如何修复WPF表单调整大小 – 控制滞后和黑色背景?

如何修复WPF表单调整大小 – 控制滞后和黑色背景?,第1张

概述我有一个非常简单的WPF窗口 – 它唯一的东西是右对齐按钮。当我通过拖动左边界来调整窗口大小时,按钮会跳转 – 很多。自己动手,来回拖动左边界。 此外,在调整大小期间,黑色背景会暂时暴露。 在this问题中,我问了一个关于Windows Forms的类似问题。我得到的唯一答案表明这在WPF中得到了修复,然而,令人惊讶的是,它不仅没有修复,而且WPF还增加了第二个视觉错误 – 临时黑色背景。 这是控 我有一个非常简单的WPF窗口 – 它唯一的东西是右对齐按钮。当我通过拖动左边界来调整窗口大小时,按钮会跳转 – 很多。自己动手,来回拖动左边界。

此外,在调整大小期间,黑色背景会暂时暴露。

在this问题中,我问了一个关于windows Forms的类似问题。我得到的唯一答案表明这在WPF中得到了修复,然而,令人惊讶的是,它不仅没有修复,而且WPF还增加了第二个视觉错误 – 临时黑色背景。

这是控制滞后的样子;这种情况发生在我通过顶部边框调整窗口大小时(用相机记录,因为屏幕上限会使一切变慢而不那么明显):

黑色边框的示例:在调整窗口大小时捕获了这个边框;这只是一瞬间,但非常明显:

难道我做错了什么?在调整大小期间,如何让我的控件在一个地方保持可视化?我怎样才能避开黑色边框?

注意:按钮最终会在正确的位置结束 – 它只会在调整大小时短暂跳转。

解决方法 这是基于WIEser Software Ltd的第二个解决方案的完整工作代码。
public partial class MainVIEw : Window{    public MainVIEw()    {        InitializeComponent();        //ensure win32 handle is created        var handle = new WindowInteropHelper(this).EnsureHandle();        //set window background        var result = SetClassLong(handle,GCL_HBRBACKGROUND,GetSyscolorBrush(color_WINDOW));    }    public static IntPtr SetClassLong(IntPtr hWnd,int nIndex,IntPtr DWNewLong)    {        //check for x64        if (IntPtr.Size > 4)            return SetClassLongPtr64(hWnd,nIndex,DWNewLong);        else            return new IntPtr(SetClassLongPtr32(hWnd,unchecked((uint)DWNewLong.ToInt32())));    }    private const int GCL_HBRBACKGROUND = -10;    private const int color_WINDOW = 5;    [Dllimport("user32.dll",EntryPoint = "SetClassLong")]    public static extern uint SetClassLongPtr32(IntPtr hWnd,uint DWNewLong);    [Dllimport("user32.dll",EntryPoint = "SetClassLongPtr")]    public static extern IntPtr SetClassLongPtr64(IntPtr hWnd,IntPtr DWNewLong);    [Dllimport("user32.dll")]    static extern IntPtr GetSyscolorBrush(int nIndex);}
总结

以上是内存溢出为你收集整理的如何修复WPF表单调整大小 – 控制滞后和黑色背景?全部内容,希望文章能够帮你解决如何修复WPF表单调整大小 – 控制滞后和黑色背景?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存