久趣下载站

当前位置: 首页 » 游戏攻略 » WPF 中实现win10/11模糊效果的方法

WPF 中实现win10/11模糊效果的方法

先看效果图:

大致思路是:通过反射获取

Popup

内部的

原生窗口句柄

,然后通过前文已经实现的

WindowMaterial

类来应用窗口特效;对于

ToolTip

,为了保持其易用性,我使用了

附加属性+全局样式

的方式来实现,

ToolTip

也是一个特殊的

Popup

前文链接:WPF 模拟UWP原生窗口样式——亚克力|云母材质、自定义标题栏样式、原生DWM动画 (附我封装好的类)

本文的Demo:TwilightLemon/WindowEffectTest: 测试win10/11的模糊效果 (github.com)

一、获取原生窗口句柄

通过查阅.NET源码得知,Popup内部通过一个类型为

PopupSecurityHelper

的私有字段

_secHelper

来管理窗口

hWnd

,并且在创建完成之时会触发

Popup.Opened

事件。

通过反射来获取窗口句柄:

同样地,能在

ToolTip

内部找到私有字段

_parentPopup

二、应用WindowMaterial特效

有了窗口句柄那么一切都好办了,直接调用我封装好的

WindowMaterial

类,如果你想了解更多请查看前文。

根据微软的设计规范,这里默认对普通Popup使用圆角,对ToolTip使用小圆角,使用亚克力材质并附加compositionColor。

在github中获取完整的WindowMaterial.cs,我可能会不定期地更新它:WindowEffectTest/WindowMaterial.cs at master · TwilightLemon/WindowEffectTest (github.com)

如果你想使用Mica或MicaAlt等材质则将上面框起来的代码替换为:

三、没错我又封装了一个即开即用的类

在Demo中查看封装好的类:WindowEffectTest/FluentPopup.cs at master · TwilightLemon/WindowEffectTest (github.com)

使用FluentPopup

猜你喜欢
本类排行