我知道已经提出并回答了类似的问题。然而,我的问题分为三个部分。

出于此问题的目的,请牢记以下几点:

  • 我是计算机科学的业余,早期大学本科生。我在复杂的编程方面非常不熟练,但是我可以理解大多数术语。
  • 这是使用VB.NET在Visual Studio中创建的WPF项目,但是由于语言的相似性,我可以轻松读取C#。
  • 这是我第一次尝试使用任何DWM API。

  • 1.在无框 window 上涂上毛玻璃

    首先,是否可以在无边框窗口的背景中使用玻璃效果?如果是这样(我相信是这样),这是怎么做的?

    此外,由于Windows 8和更高版本不再使用半透明玻璃效果,因此在那些操作系统上还能做到这一点吗?

    2.不用玻璃就能保持自然的模糊效果

    我想要平滑的 native DWM模糊效果,但是我不想使用光滑的玻璃覆盖,也不需要用户主题设置中预定义的窗口颜色。

    3.自定义模糊半径和位置

    是否可以仅将此效果应用于窗口的特定部分?更重要的是,是否可以调节模糊效果的强度(半径)?

    编辑-屏幕截图示例

    根据要求,我发布了一些希望达到的效果的示例。

    上图是我的WPF应用程序的实际屏幕截图(仍在工作中)。其简约的设计在很大程度上依赖于运动动画和窗口大小调整。

    使用一些Photoshop技能,我已经在上面的图像上进行了渲染,展示了我想要创建的效果,正是我想要的方式。请注意以下几点:
  • 模糊的半径(强度)比通常的Aero模糊效果高得多。
  • 模糊仅在窗口的一部分上可见
  • 模糊不会从桌面
  • 的绿色主题继承其颜色

    最佳答案

    1.将Aero Glass应用于无边界窗口

    由于您要实现的并不是玻璃效果,而是更多的透明+模糊效果,因此您可以使用以下方法在窗口后面进行模糊处理。

    Windows 7 :您可以使用DwmEnableBlurBehindWindow在窗口后面模糊。

    窗口8 :自从Windows 8中删除了DwmEnableBlurBehindWindow以来,我没有找到可行的解决方案。

    Windows 10 :您可以使用SetWindowCompositionAttribute在窗口后面模糊。

    2.在不使用玻璃的情况下保持 native 模糊效果

    上述解决方案将仅在窗口后面应用模糊效果,取决于窗口以定义透明度和颜色。

    3.自定义模糊半径和位置

    使用这些方法,您只能在整个窗口下方进行模糊处理,这取决于您要在要透明的窗口部分上使用Alpha channel 。我也不认为您可以定义模糊半径。

    10-07 19:39
    查看更多