8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 Windows 11 中向左调整大小时 WPF 透明窗口闪烁

kebab-case 2月前

24 0

我正在尝试构建一个带有透明窗口的 Windows 11 应用程序。我通过设置 AllowsTransparency=True 和 WindowStyle=None 实现了透明窗口。但是当我调整到左侧时,

我正在尝试构建一个带有透明窗口的 Windows 11 应用程序。我通过设置 AllowsTransparency=True 和 WindowStyle=None 实现了透明窗口。但是当我将窗口大小调整到左侧时,窗口会闪烁。 中也有与闪烁问题相关的类似问题。它们大多数都是针对 win32 的,或者没有提供合适的解决方案,或者某些 API 可能现在不受支持。我理解这本身就是 Windows 框架的限制。所以,我尝试使用 windowchrome 属性。我在 windowchrome 属性中设置了 NonClientFrameEdges=Left。它适用于 Windows 10。Windows 10 中没有闪烁。但在 Windows 11 中,透明度完全消失了,出现了白色背景。这个问题甚至存在于 WinUI3 中。我认为它非常明显,对用户来说体验并不好。有什么方法可以减少或消除这种闪烁吗?

我已经回答过这些问题, 从左侧调整窗口大小时窗口闪烁的 questions 如何在调整窗口大小时平滑难看的抖动/闪烁/跳跃,尤其是拖动左/上边框(Win 7-10;bg、bitblt 和 DWM)? https://github.com/microsoft/microsoft-ui-xaml/issues/5148

我希望 WPF 透明窗口在向左调整大小时不会闪烁。我正在使用 .net8。

我创建了一个WPF项目。项目中的MainWindow.xaml的代码示例如下:

<Window x:Class="BlurWindow.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:BlurWindow"
        mc:Ignorable="d"
        AllowsTransparency="True"
        WindowStyle="None"
        Background="#1f010100"
        BorderBrush="White"
        BorderThickness="2"
        Title="MainWindow" Height="450" Width="800">
    <WindowChrome.WindowChrome>
        <WindowChrome CaptionHeight="32"/>
    </WindowChrome.WindowChrome>
    <Border x:Name="MainWindowBorder" Background="Transparent">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid Background="White" Grid.Row="0">
                <StackPanel 
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                Orientation="Horizontal">
                    <TextBlock FontFamily="Arial"
                           Text="Sample App"/>
                </StackPanel>
               
            </Grid>
        </Grid>

    </Border>
</Window>
帖子版权声明 1、本帖标题:在 Windows 11 中向左调整大小时 WPF 透明窗口闪烁
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由kebab-case在本站《wpf》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: