QuickLook-Next 5.0.0
界面材质:菜单类界面改用 Windows 11 的材质
托盘菜单以前和 Win11 右键菜单看起来不一样,是因为两者根本不是同一种材质:我们用的是 WCA acrylic(ACCENT_ENABLE_ACRYLICBLURBEHIND)再叠两层自己调的 tint(accent 约 30% + 画刷约 55%),所以壁纸几乎透不出来、整体发白发平;Win11 菜单用的是系统材质,模糊更柔、壁纸颜色明显透出来。
这次改用 ACCENT_ENABLE_HOSTBACKDROP(accent state 5)——就是在 TranslucentTB 源码 Common/undoc/user32.hpp 里注释为 "allows desktop apps to use Compositor.CreateHostBackdropBrush" 的那一层,也就是 Win11 菜单所用的材质。关键点是:它在不抢焦点的窗口上依然会渲染——DWM 的 SystemBackdropType(3 / 6)在我们这类非激活窗口上只会渲染成纯色,这正是多年只能用 WCA 的原因。
同时把 tint 调淡(accent 12% + 画刷约 20%),壁纸才真正透得出来。
- 生效范围:托盘菜单、插件管理窗口、更新提示框、下载进度面板
- 预览窗口保持不变:继续使用 WCA acrylic(它是唯一在非聚焦状态下验证可用的方案)
- 兼容回退:Windows 10 或 Win11 21H2 及更早没有 host backdrop 时,自动回退到原来的 WCA acrylic,只是 tint 更淡;不会出现"没有材质"的情况
- 冒烟测试新增断言:每个菜单界面必须报告实际使用的材质(
material=host-backdrop/material=acrylic),防止以后静默退化
怎么来的(对照实验)
并排渲染了四个候选:WCA acrylic、DWM backdrop 3(TransientWindow)、DWM backdrop 6(Acrylic11)、DWM backdrop 3 + 原生窗框(激活/非激活各一)。结果:
| 候选 | 结果 |
|---|---|
| WCA acrylic(旧实现) | 有模糊,但被两层 tint 压得很平 |
| DWM backdrop 3 / 6,非激活 | 纯色,无模糊 |
| DWM backdrop 3 + 原生窗框 + 强制激活 | 仍然纯色(说明系统材质对我们这类窗口不可用) |
| accent state 5 + 调淡 tint | 模糊柔和、壁纸明显透出,最接近真实菜单 |
同一张截图中,资源管理器真实右键菜单材质正常;新实现与它的观感已经非常接近。
升级说明
这是界面可见变化,按你的要求版本号跳到 5.0.0(4.x 保留给你自己试验新功能用)。程序逻辑、预览性能、内存行为都没有改动。