WPF窗口透明度(包括非客户区域)

Qup*_*ppa 7 wpf transparency opacity

有没有办法让WPF窗口透明而不会丢失非客户区域(边框,标题栏,关闭/最小化/最大化按钮)?

将"AllowTransparency"设置为"true"需要将"WindowStyle"设置为"None"(如本答案中所述),这将删除非客户区域.

其中一位WPF开发人员发表了关于透明窗口如何在WPF中工作的博客,以及为什么难以实现对非客户区域透明度的支持.

无论您的窗口样式如何建议,透明的WPF窗口都没有任何可见的非客户区域.这适用于许多场景,其目的是创建自定义窗口形状,但对于只想"淡入"普通窗口的人来说这可能很烦人.

因此,仅WPF解决方案似乎是不可能的.

调用本机SetLayeredWindowAttributes函数并传递WPF窗口的句柄和LWA_ALPHA没有效果,如预期的那样.

我能想到的唯一其他方法是在Win32(或可能是WinForms)窗口中托管WPF内容.但我怀疑试图这样做会导致空域问题.

WPF分层窗口在不同的操作系统上具有不同的功能...... WPF不支持透明度颜色键,因为WPF无法保证呈现您请求的确切颜色,特别是在渲染是硬件加速时.

我不确定我是否正确阅读上述内容,但听起来好像试图托管具有透明度的WPF内容是不可能的.

有任何想法吗?

透明Notepad2窗口

baa*_*mon 2

您可以使用 ms 中名为WPF Chrome 的库自定义非客户端区域。查看这篇文章:“自定义窗口 Chrome”

使用这个库,您可以使 chrome 透明并更改更多内容。