Win10 Acrylic(亚克力)、Win11 mica(云母)、Win7 Aero Glass(毛玻璃);也就是通常说的 透明磨砂 效果;
OS VERSION | APPELLATION | SDK | EXPLAIN |
---|---|---|---|
Windows 7 | Aero Glass / 毛玻璃 / 磨砂玻璃 | extendFrameIntoClientArea() |
only Windows 7 / Vista |
Windows 10 | Acrylic Material / 亚克力 材质 | SetWindowCompositionAttribute() |
MSDN DOC |
Windows 11 | Mica / 云母 | SetWindowCompositionAttribute() |
MSDN DOC |
- 『BlurEffect』 属奇思妙想,实现简单且跨平台,属 等效 跨平台透明磨砂效果;**原理: ** 在显示窗口的底层放一个 "QWidget + 图片 + QGraphicsBlurEffect" 作为铺垫
- 『AcrylicMaterial + Demo』 生成
AcrylicMaterial.dll
,Demo.exe
调用上面AcrylicMaterial.dll
的接口,显示一个 QWidget 窗口。**原理: ** 调用 Windows 10/7 SDK 不公开的 API - 矩阵逐个点去磨砂
- qss?
// 仅支持 windows 7 的毛玻璃 磨砂 透明 Aero Glass 效果
#ifdef Q_OS_WIN
// 添加 winextras
#include <QtWin>
this->setAttribute(Qt::WA_TranslucentBackground);
QtWin::enableBlurBehindWindow(this);
QtWin::extendFrameIntoClientArea(this, -1, -1, -1, -1);
#endif
If the running background images does not load, please check
.dll
PathImage
Path
- https://github.com/wangwenx190/Win32Acrylic
- https://github.com/Qt-Widgets/qtacrylicmaterial
- https://github.com/zhiyiYo/PyQt-Frameless-Window
- 亚克力效果的实现思路 『本项目主要参考此文,后略作修改』
- 使用 SetWindowCompositionAttribute 来控制程序的窗口边框和背景
- DDE 透明磨砂效果原理: deepin-wm 的动态背景模糊实现