【问题标题】:Apply aero glass blur to a specific control area in WPF将航空玻璃模糊应用于 WPF 中的特定控制区域
【发布时间】:2011-10-18 22:49:47
【问题描述】:

在他的书中(Pro WPF in C# 2010 Windows Presentation Foundation in .NET 4)Matthew MacDonald - 写道:

...您可以使用 DwmEnableBlurBehindWindow() 将玻璃效果应用到特定区域 窗口。

这是否意味着我可以将航空玻璃效果应用于特定控件(或至少它们占据的区域)?

请提供一个关于如何使用 C# 执行此操作的示例。

【问题讨论】:

  • WPF 不使用窗口作为控件。所以是的。访问 pinvoke.net 以获取 pinvoke 声明。这本书真的有用吗?
  • 我所找到的只是示例,您必须将 Hwnd 提供给 DwmEnableBlurBehindWindow()。因为,正如我已经知道的那样,WPF 控件不是单独的窗口,我猜作者的假设是错误的。顺便说一句,这可以在 Windows 窗体窗口中工作 =)
  • WPF 将窗口中的所有内容转储到单个 HWND 中。
  • @BoltBlock,当然,我知道。这与我的问题无关 =) 上述书籍的作者关于模糊窗口区域的假设是否错误。

标签: c# wpf pinvoke wdm


【解决方案1】:

如果我理解您的意图是将 DWM 实现的模糊应用于将在其后面的窗口中显示内容的控件,那么不会:“此函数只能在顶级窗口上调用。”。

但是,您可以将 DWM 模糊应用于包含控件区域中的控件的顶层窗口,并查看其后面的窗口。查看 DwmEnableBlurBehindWindowCreateRectRgnDeleteObject 的 P/Invoke 签名以清理模糊区域。

【讨论】:

  • WvmEnableBlurBeindWindow 如何与 CreateRectRgn 配合使用?
  • @MaximV.Pavlov:参见 [MSDN][1]。简而言之,blurBehind 参数的 hRgnBlur 是要模糊的区域,CreateRectRgn() 是创建区域的简单方法(显然是矩形区域)。有关创建非矩形区域的其他 HRGN 相关函数,请参阅 GDI API。 [1]:msdn.microsoft.com/en-us/library/windows/desktop/…
猜你喜欢
  • 2012-12-18
  • 1970-01-01
  • 2013-10-21
  • 2011-05-05
  • 2012-07-21
  • 1970-01-01
  • 2010-12-17
  • 2019-04-16
  • 1970-01-01
相关资源
最近更新 更多