桌面应用图形学【免费下载链接】DWMBlurGlassAdd custom effect to global system title bar, support win10 and win11.项目地址https://gitcode.com/gh_mirrors/dw/DWMBlurGlass点击查看免费下载本篇技术指南以 DWMBlurGlass 官方中文文档README_ZH.md为主线系统讲解这款为 Windows 10 / Windows 11 全局系统标题栏添加自定义模糊效果的桌面美化工具包括其核心特性、兼容性边界、Blur / Aero / Acrylic / Mica 四种材质效果的真实配方、安装与符号文件机制、配置文件逐项参数说明以及基于仓库源码DWMBlurGlassExt与Common的底层实现原理。读完本文你将能够独立完成 DWMBlurGlass 的安装、配置、故障排查与语言文件本地化并理解其与 MicaForEveryone 等方案的本质区别。项目核心能力总览DWMBlurGlass 的目标是给全局系统标题栏添加自定义效果其功能清单源自官方文档均有对应源码实现包括为全局系统标题栏添加自定义背景效果可分别自定义全局或仅标题栏的模糊强度对应配置项blurAmount与customBlurAmount可自定义标题栏混合颜色activeBlendColor/inactiveBlendColor及深色模式变体可自定义标题栏文本颜色activeTextColor/inactiveTextColor及深色模式变体可添加Aero 反射和视差效果reflection、glassIntensity可还原Win7 样式标题栏按钮高度oldBtnHeight与按钮发光效果titlebtnGlow支持为使用旧版 Win7 APIDwmEnableBlurBehindWindow的程序启用模糊效果支持Blur、Aero、Acrylic、Mica(仅 Win11)四种材质效果可单独设置亮/暗颜色模式下的颜色并跟随系统自动切换提供CustomBlur、AccentBlur、SystemBackdrop三种模糊方法可选支持第三方主题定制 DWM。上述配置项在源码 Common/Common.h 的ConfigData结构体中均有明确定义并在 Common/Common.cpp 的LoadFromFile中完成读取与取值约束。兼容性与设计理念根据官方文档DWMBlurGlass 最低支持Windows 10 2004最高支持Windows 11 最新版部分模糊方法不支持预览版系统。需要重点理解其设计哲学不修改应用程序本身的渲染逻辑与 MicaForEveryone 原理完全不同因此最大程度与第三方程序兼容通过逆向分析 dwm并编写自定义模糊类带来视觉效果但若选择SystemBackdrop模糊方法则使用公开的系统接口效果与 MicaForEveryone 一致不推荐与 MicaForEveryone 一起使用官方不保证兼容性与 [ExplorerBlurMica] 兼容一起使用效果更佳与 [TranslucentFlyouts] 兼容但需注意 EBMv2 与 TFv2 并不完全兼容可以与第三方主题一起使用进一步定制 DWM。从源码看兼容性边界是硬编码在运行时的在 BackdropFactory.cpp 的RefreshConfig中会通过os::buildNumber 22000判断系统版本Mica 效果在 Windows 10 上会被自动降级为 Blur——这与文档中Mica(仅win11)的说明完全一致。四种材质效果与源码配方官方文档将材质效果分为四种基础类型本仓库DWMBlurGlassExt/Backdrops/目录下每一类都有对应的独立实现文件以下是配方 源码证据的对照解析。Blur基础模糊基础的模糊效果没什么特别的。实现位于 BlurBackdrop.hpp使用GaussianBlurEffect高斯模糊SetBorderMode(D2D1_BORDER_MODE_HARD)、SetOptimizationMode(D2D1_GAUSSIANBLUR_OPTIMIZATION_SPEED)模糊量取配置的customBlurAmount模糊后的背景通过CompositeStepEffect与ColorSourceEffect色调颜色OpacityEffect色调透明度叠加实现模糊 混合色的合成代码中有两个快速路径当色调完全不透明tintColor.A * tintOpacity 255时直接返回纯色画笔当模糊量为 0 时返回半透明纯色画笔避免无意义的模糊计算。AeroWin7 玻璃效果Windows 7 的玻璃效果失去焦点时具有曝光和饱和度效果。实现位于 AeroBackdrop.hpp配方比 Blur 复杂得多同样是高斯模糊作为基底模糊量为 0 时直接使用CreateBackdropBrush引入SaturationEffect将模糊背景去饱和SetSaturation(0.f)配合TintEffect的黑色叠加制造玻璃的半透明黑质感blurBalance亮度平衡、colorBalance色彩平衡、afterglowBalance饱和度平衡/辉光平衡三个参数分别控制模糊背景透明度、主色调透明度与辉光强度三者通过多个CompositeStepEffectD2D1_COMPOSITE_MODE_PLUS相加模式逐层叠加非活动窗口失去焦点时BackdropFactory会将参数调整为aeroColorBalance * 0.4f与0.4f * aeroBlurBalance 0.6f见 BackdropFactory.cpp从而产生文档所述的失焦曝光/饱和度变化效果。失焦状态下的 Aero 效果见 aero_inactive.png。Acrylic亚克力亚克力效果配方背景、模糊、叠加混合、饱和度、颜色混合覆盖、噪点纹理。实现位于 AcrylicBackdrop.hpp完整对应文档所述配方背景 模糊CreateBlurredBackdrop(blurAmount)提供模糊背景叠加混合 饱和度 颜色混合覆盖通过两级BlendEffectD2D1_BLEND_MODE_COLOR与D2D1_BLEND_MODE_LUMINOSITY将模糊背景与亮度色LuminosityColor、色调色TintColor混合噪点纹理从Windows.UI.Xaml.Controls.dll的资源中加载噪点纹理见 BackdropFactory.cpp 的CreateMaterialTextureBrush经BorderEffectD2D1_BORDER_EDGE_MODE_WRAP平铺OpacityEffectnoiceAmount此处固定 0.02fD2D1_BLEND_MODE_MULTIPLY乘法混合叠加在表面该文件还实现了官方 Windows 亚克力材质特有的TintOpacity 抑制算法GetTintOpacityModifier根据颜色的亮度HSV 的 V 值与饱和度压缩允许的最大色调透明度——纯白映射到 45%、纯黑 85%、纯灰 90%饱和度越高抑制越弱让颜色更透出来。Mica云母仅 Win11云母效果配方模糊的壁纸、饱和度、颜色混合覆盖。实现位于 MicaBackdrop.hpp背景来源与 Blur/Acrylic 不同直接使用compositor.TryCreateBlurredWallpaperBackdropBrush()模糊壁纸作为输入而非窗口背后的实时桌面同样使用D2D1_BLEND_MODE_COLOR与D2D1_BLEND_MODE_LUMINOSITY两级混合将亮度色与色调色覆盖到模糊壁纸上对应文档所述饱和度、颜色混合覆盖代码注释指出 Direct2D 存在BlendEffectMode::Luminosity与Color命名颠倒的已知 bug因此源码中两个SetBlendMode的调用顺序是看起来相反的这是刻意为之。MicaAlt灰色调云母变体官方文档说明以上所有效果均可自定义混合颜色MicaAlt 是灰色调的云母效果的变体——你不需要单独的选项只需将混合颜色自定义为灰色调即可实现 MicaAlt 效果。这印证了activeBlendColor/activeBlendColorDark等混合颜色配置项的设计意图。效果选择的分发逻辑四种材质由 BackdropFactory.cpp 中的switch (g_type)统一分发同时该文件还处理了ACCENT_POLICY 兼容当窗口通过旧版SetWindowCompositionAttribute/DwmEnableBlurBehindWindow传入 ACCENT 策略时会按nAccentState1启用模糊、2启用透明、3亚克力、4宿主背板映射到对应的画笔这正是文档所述支持为使用旧版 Win7 API 的程序启用模糊效果的实现位置。所有画笔按颜色值缓存g_backdropActiveBrushMap/g_backdropInactiveBrushMap配置刷新时清空重建。安装与卸载安装步骤从项目 Release 发布页面下载压缩包官方文档特别强调不要从其他地方下载 DWMBlurGlass曾有冒充者发布植入恶意代码的版本请仅从官方发布渠道获取官方也没有任何 Discord 群组解压到一个位置例如C:\Program Files运行DWMBlurGlass.exeGUI 程序点击安装。安装环节有一个关键前置条件——符号文件如果提示安装成功! 但您还没有下载有效的符号文件在符号文件页面下载后才能生效则需要前往 GUI 的符号页面下载符号系统更新后可能还会收到类似提示届时下载新的符号即可如果下载失败则可能需要使用代理在中国大陆部分地区可能无法访问微软服务器msdl.microsoft.com。从源码看安装动作MainPage.cpp会先创建计划任务InstallScheduledTasks再检查符号状态MHostGetSymbolState()符号有效后才启动宿主进程RunMHostProcess。符号文件的下载与校验逻辑在 SymbolResolver.cpp 中实现通过SRV*本地目录\data\symbols*http://msdl.microsoft.com/download/symbols符号服务器路径从微软服务器拉取 pdb 并缓存到程序目录下的data\symbols。GUI 语言文件中对此有明确说明符号文件(pdb)是记录程序调试信息的一种文件由于各版本系统各不相同所以需要从微软服务器下载符号文件见 zh-CN.xml 的symtip字段。卸载步骤运行DWMBlurGlass.exeGUI 程序点击卸载手动删除相关剩余文件。源码层面卸载MainPage.cpp会先停止宿主进程StopMHostProcess再删除计划任务DeleteScheduledTasks。安装位置注意事项语言文件 zh-CN.xml 的initfail0字段给出了一条重要的运行约束由于 DWM 权限隔离限制应用程序必须放在非用户目录路径不能在用户目录如C:\Users\...或其子目录中否则初始化会失败并提示更改目录。这也是官方建议解压到C:\Program Files的原因。配置文件与参数详解配置以 INI 格式保存在程序目录下的data\config.ini由ConfigData::LoadFromFile/SaveToFileCommon/Common.cpp读写段名为[config]。GUI 中点击保存配置即写入该文件并通知 DWM 刷新RefreshDWMConfig。以下为ConfigDataCommon/Common.h全部字段、默认值与取值范围汇总配置项类型默认值取值范围/说明applyglobalboolfalse是否全局应用效果extendBorderboolfalse扩展效果到边框Win10reflectionboolfalse启用 Aero 反射效果oldBtnHeightboolfalse还原 Win7 样式标题栏按钮高度customAmountboolfalse使用仅标题栏的模糊半径useAccentColorboolfalse使用系统主题色 RGB 取代颜色设置 RGBcrossFadebooltrue启用标题栏混合色交叉淡出动画overrideAccentboolfalse覆盖 Accent 模糊效果scaleOptimizerboolfalse启用模糊渲染优化disableOnBatterybooltrue在省电模式下关闭效果titlebtnGlowboolfalse启用 Win7 样式标题栏按钮发光disableFramerateLimitboolfalse关闭 Dcomp 帧率限制extendRoundint10边框扩展圆角半径0~16titlebtnOffsetXint-1标题栏按钮水平偏移-1~1000blurAmountfloat20.0全局模糊半径0~50customBlurAmountfloat20.0自定义仅标题栏模糊半径0~50luminosityOpacityfloat0.65材质亮度不透明度0~1glassIntensityfloat1.0Aero 反射纹理不透明度0~1crossfadeTimeUINT160动画时长毫秒0~500crossFadefalse时强制为 0aeroColorBalancefloat0.08Aero 色彩平衡0~1自 2.1.0 新增aeroAfterglowBalancefloat0.43Aero 饱和度/辉光平衡0~1aeroBlurBalancefloat0.49Aero 亮度平衡0~1activeTextColorCOLORREF0xFF000000活动状态文本颜色inactiveTextColorCOLORREF0xFFB4B4B4非活动状态文本颜色activeBlendColorCOLORREF0x64FFFFFF活动状态标题栏混合颜色inactiveBlendColorCOLORREF0x64FFFFFF非活动状态标题栏混合颜色activeTextColorDarkCOLORREF0xFFFFFFFF深色模式活动状态文本颜色inactiveTextColorDarkCOLORREF0xFFB4B4B4深色模式非活动状态文本颜色activeBlendColorDarkCOLORREF0x64000000深色模式活动状态混合颜色inactiveBlendColorDarkCOLORREF0x64000000深色模式非活动状态混合颜色blurMethodint(枚举)0模糊方法0CustomBlur、1AccentBlur、2DWMAPIBlur0~2effectTypeint(枚举)0效果类型-1None、0Blur、1Aero、2Acrylic、3Mica-1~3源码中的取值约束Common/Common.cpp值得注意所有数值型参数都通过std::clamp限定范围即使手工编辑 INI 写入越界值也会被纠正颜色类参数读取后强制修正 alpha文本颜色强制| 0xFF000000不透明混合颜色则保留原始 alpha 值如0x64FFFFFF表示约 39% 不透明度的白色逻辑约束当blurMethod ! CustomBlur即使用 AccentBlur 或 DWMAPIBlur且effectType Acrylic即 Mica时会强制回退为 Acrylic——因为 Mica 效果只有自研的 CustomBlur 方法才能渲染GUI 语言文件对三种模糊方法的官方说明zh-CN.xmlCustomBlur推荐使用本程序编写的模糊类利用 CVisual(DWM) 和 IComposition(dcomp) 实现自定义背景效果可自定义绝大部分参数效率最高、效果最好、稳定性较好但系统适配范围一般系统大更新可能失效需要等待更新AccentBlur不推荐使用 DWM 内部未公开但未删除的 AccentBlurBehind 类实现模糊效果可自定义一小部分参数效率较低、稳定性较差但系统适配范围较好一般系统更新不会失效DWMAPIBlur使用公开的 DWMAPI 设置 SystemBackdrop 效果可选预设的 Acrylic、Mica 效果无法自定义参数效率高、稳定性较好但可能破坏部分程序的渲染系统适配范围仅限 Windows 11 22H2()。源码级实现原理Hook 机制DWMBlurGlass 通过 MinHook 挂钩 dwm 进程dwmcore.dll与udwm.dll的内部函数。完整的挂钩函数清单集中在 DefFunctionList.h主要包括dwmcore 侧CRenderingTechnique::ExecuteBlur、CCustomBlur::BuildEffect/Draw/DetermineOutputScale/Reset、CD2DContext::FillEffect、CDrawingContext::DrawVisualTree、CFilterEffect::CalcInversedWorldInputBoundsFromVisibleWorldOutputBoundsRecursive等——负责接管模糊渲染管线udwm 侧CTopLevelWindow::ValidateVisual/UpdateWindowVisuals/UpdateNCAreaBackground/UpdateSystemBackdropVisual、CWindowList::UpdateAccentBlurRect/StyleChange、CAccent::UpdateAccentPolicy/UpdateAccentBlurRect、CButton::UpdateLayout/RedrawVisual等——负责窗口视觉树、标题栏按钮与 Accent 策略的注入。关键入口是 HookDef.h 中的g_CTopLevelWindow_ValidateVisual_HookDispatcher一个CTopLevelWindow::ValidateVisual的 MiniHook 多路分发器按顺序调用AccentBlur、CustomButton、CustomBackdrop、DwmAPIEffect各模块的钩子例程before/after调用类型将各功能模块统一挂接到窗口视觉验证流程上。插件入口 DWMBlurGlass.cpp 的Startup/Shutdown负责加载偏移表、附加/分离各钩子模块并在异常时通过TopLevelExceptionFilter将 minidump 写入data\dumps目录。配置热刷新流程当 GUI 点击保存配置后宿主进程调用RefreshDWMBlurGlass.cpp若reloadtrue则重新从data\config.ini加载ConfigData随后依次刷新DwmAPIEffect、CustomBackdrop、AccentBlur、BlurRadiusTweaker、CustomButton、ScaleOptimizer各模块若启用了useAccentColor则通过DwmGetColorizationColor读取系统主题色最后向 DWM 发送WM_THEMECHANGED消息触发界面重绘。语言文件与本地化贡献项目默认提供英语和简体中文两种基础语言并欢迎社区翻译其他语言。官方文档给出了完整的贡献流程Fork 并克隆此仓库到本地打开Languagefiles文件夹选择一个现有语言文件例如zh-CN.xml并复制重命名为目标区域代码名称参考微软的区域代码命名规范并用文本编辑器编辑此 XML 文档修改第二行local字段的值为目标区域代码名称应与文件名一致但不含.xml后缀可在author字段中填写你的名称翻译剩余字段值注意不要翻译字段名称正确格式为configConfig/config翻译为configxxxx/config保存文件并复制到 DWMBlurGlass.exe 程序所在文件夹下的data\lang目录中打开 DWMBlurGlass.exe 测试语言文件是否正常工作若不正常请检查语言代码设置以及文件是否符合 XML 格式规范将文件提交到自己 Fork 的仓库并向项目主分支发送拉取请求请求通过后该文件将随未来的软件更新一起发布。仓库已包含 20 余种语言文件如 en-US.xml、zh-CN.xml、ja-JP.xml、ru-RU.xml 等可作为翻译模板直接参照。GUI 语言文件的解析由内置的 pugixml 库pugixml完成。依赖与工程结构官方文档列出的依赖如下均为仓库内已集成的组件MiaoUI Lite interface library v2——GUI 界面库DWMBlurGlass.exe的界面框架AcrylicEverywhere——CustomBlur 方法的上游单独实现感谢其作者的研究和支持minhook——API 挂钩库集成于 DWMBlurGlassExt/minhookpugixml——XML 解析库集成于 DWMBlurGlass/pugixmlVC_LTL——轻量运行时库Windows Implementation Libraries (wil)——Windows 实现库头文件集成于 DWMBlurGlass/Helper/wil.h 与 DWMBlurGlassExt/Common/wil.h。工程采用双项目结构DWMBlurGlassGUI 配置程序含MainWindow、MainPage、ColorPickerDlg等界面与 MHost 宿主通信逻辑与DWMBlurGlassExt注入 dwm 的扩展 DLL含 Backdrops、Effects、Section 各模块解决方案文件为 DWMBlurGlass.sln。项目基于 LGPLv3 协议开源COPYING.LESSER。常见问题与使用提示安装成功但效果未生效绝大多数情况是符号文件缺失或系统更新后符号过期到符号文件页面重新下载即可符号文件下载失败msdl.microsoft.com在中国大陆部分地区可能无法访问可尝试使用代理Windows 10 上无法选择 Mica源码中 Mica 会在buildNumber 22000时自动降级为 BlurBackdropFactory.cpp与文档仅 Win11一致使用非 CustomBlur 方法时 Mica 不可用配置加载时会强制回退为 AcrylicCommon/Common.cpp程序初始化失败检查程序是否位于用户目录如C:\Users\...下DWM 权限隔离要求程序必须放在非用户目录与第三方程序冲突优先保持默认的 CustomBlur 方法避免选择可能破坏部分程序渲染的 SystemBackdrop 方法不推荐与 MicaForEveryone 同时使用安全提醒仅从官方发布渠道下载软件警惕冒充者发布的植入恶意代码的版本官方没有任何 Discord 群组。赞分享桌面应用图形学【免费下载链接】DWMBlurGlassAdd custom effect to global system title bar, support win10 and win11.项目地址https://gitcode.com/gh_mirrors/dw/DWMBlurGlass点击查看免费下载相关推荐DWMBlurGlass 全局标题栏模糊定制完全指南从材质配方到三种模糊方法DWMBlurGlass 全局标题栏模糊定制完全指南从材质配方到三种模糊方法 本文以 DWMBlurGlass 官方意大利语 README README_I桌面应用图形学DWMBlurGlass 全局标题栏毛玻璃效果实战指南安装配置、三种模糊方法与材质渲染原理DWMBlurGlass 全局标题栏毛玻璃效果实战指南安装配置、三种模糊方法与材质渲染原理 DWMBlurGlass 是一个为 Windows 10 / Wi桌面应用图形学DWMBlurGlass 全局标题栏自定义特效指南Blur/Aero/Acrylic/Mica 材质与安装配置全解析DWMBlurGlass 全局标题栏自定义特效指南Blur/Aero/Acrylic/Mica 材质与安装配置全解析 导读 DWMBlurGlass 是一款基桌面应用图形学上一篇腾讯混元翻译模型对比Hy-MT2-1.8B、7B、30B-A3B三大版本如何选择下一篇告别空白尴尬Ant Design Empty组件让无数据界面更友好创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?