【发布时间】:2013-06-19 05:34:18
【问题描述】:
我正在尝试使用 DmwAPI 中的 DwmEnableBlurBehindWindow 方法创建 Aero 玻璃 无边框 和 不可调整大小 WPF 窗口。但是,由于某种奇怪的原因,此窗口的玻璃颜色看起来好像窗口失焦。正如您在接下来的三张图片中看到的那样,带有边框的普通窗口(例如图 1 和 2)工作得很好并且反应如预期(深蓝色聚焦,失焦时发白(= 非活跃))。
允许调整大小的无边框窗口显示相同的行为:
不可调整大小的无边框窗口在处于活动状态时总是看起来好像失焦(您可以在最后一个图 3 中看到)并且不活跃。它总是看起来发白:
这是我如何设置玻璃样式的一些示例代码:
public MainWindow()
{
InitializeComponent();
WindowStyle = WindowStyle.None;
ResizeMode = ResizeMode.NoResize;
Height = 200;
Background = Brushes.Transparent;
Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var windowInteropHelper = new WindowInteropHelper(this);
var handle = windowInteropHelper.Handle;
var mainWindowSrc = HwndSource.FromHwnd(handle);
if (mainWindowSrc != null)
if (mainWindowSrc.CompositionTarget != null)
mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0);
var glassParams = new DwmApi.DwmBlurbehind
{
dwFlags = DwmApi.DwmBlurbehind.DWM_BB_ENABLE,
fEnable = true,
hRegionBlur = IntPtr.Zero
};
IntPtr dis = new IntPtr(2);
DwmApi.DwmSetWindowAttribute(mainWindowSrc.Handle,
DwmApi.DwmWindowAttribute.DWMWA_LAST,
dis,
sizeof(uint));
DwmApi.DwmEnableBlurBehindWindow(
handle,
glassParams
);
}
我尝试聚焦窗口,但这似乎不会影响行为。关于如何解决这个问题的任何想法或指示?
【问题讨论】:
标签: c# wpf aero aero-glass