首先,可能觉得这是一个愚蠢的问题(您可以直接在WPF窗口中加载WPF内容),但实际上可以阅读完整的描述以了解我为什么需要这个.。
我正在开发一个C# WPF应用程序,以模拟Windows丙烯酸模糊效果。我正在使用这里的示例代码:Win32组分样品。
使用此代码,我能够在HwndHost或直接在窗口上创建丙烯酸模糊。但这会导致Windows问题,这意味着我在窗口上绘制的所有控件都将出现在AcrylicBlur (模糊)下。就像这个:

亚克力内容重叠我的WPF按钮
因此,我决定创建一个带有丙烯酸效果的窗口,并创建一个HwndHost作为该窗口的子窗口,这样我就可以将WPF内容重叠在丙烯酸模糊的顶部,这样WPF控件就不会被模糊化。
可能有效的解决方案
还有一个我可以尝试的概念,就是创建两个窗口,一个用丙烯酸,另一个用WPF,并为两个窗口共享WM_POSITIONCHANGED消息,这使得窗口移动和调整大小相等。但这有几个问题。
发布于 2021-03-30 08:56:08
找到一种托管WPF页面的方法,而不是使用HwndHost,而是使用HwndSource。
HwndSourceParameters param = new HwndSourceParameters("Host");
param.PositionX = 10;
param.PositionY = 10;
param.Width = 500;
param.Height = 500;
param.ExtendedWindowStyle +=0x00200000; //This style creates a transparent window
param.WindowStyle = 0x10000000;
HwndSource src = new HwndSource(param);
src.SizeToContent = SizeToContent.WidthAndHeight;
src.CompositionTarget.BackgroundColor = Colors.Transparent;
src.RootVisual = new Page1(); //Your Page Herehttps://stackoverflow.com/questions/66621219
复制相似问题