gpt4 book ai didi

wpf - WPF 与 Winforms 中的窗口透明度

转载 作者:行者123 更新时间:2023-12-04 18:53:09 34 4
gpt4 key购买 nike

为什么我必须在 WPF 窗体上将 WindowStyle 属性设置为 None 以获得透明度,但在 Winforms 中我可以在任何窗体上这样做,并且保留边框、标准按钮等?显然 API 支持这一点,所以我不清楚 WPF 有什么特别之处会导致这个问题。

我猜测 WPF 正在跳过一些 DirectX 或 OpenGL 圈,而 Winforms 只是通过 API 为窗口设置 alpha,但我可能离题很远。

最佳答案

同意,这是重手:

   private void VerifyConsistencyWithAllowsTransparency(WindowStyle style)
{
if (AllowsTransparency && style != WindowStyle.None)
{
throw new InvalidOperationException(SR.Get(SRID.MustUseWindowStyleNone));
}
}

WPF 使用与 Windows 窗体、分层窗口完全相同的机制来实现它。没有明显的理由表明它在 WPF 中不能以相同的方式工作。从 Window.cs 中提取的代码片段简单地排除了它。然而,UsesPerPixelOpacity 属性提供了一个提示:

当您启用逐像素不透明度时,系统不再绘制非客户区。这是因为 UsesPerPixelOpacity 的预期目的是显示可在互操作场景中工作的非矩形顶级 UI,而显示矩形非客户区则违背了该目的。

“互操作场景”,我猜。

关于wpf - WPF 与 Winforms 中的窗口透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3424987/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com