如何在 Windows 上实现桌面叠加模糊?
How do I achieve desktop overlay blur on Windows?
当我在 Windows 10 上安装 AMD 图形驱动程序时,我注意到背景看起来很模糊,这是我想要在我的应用程序中实现的风格。
我试过使用 UpdateLayeredWindow, but it does not apply a blur effect. I have tried using DwmExtendFrameIntoClientArea and DwmEnableBlurBehindWindow 但我不确定如何自定义 window 着色
和图像叠加层。
有DwmGetColorizationColor函数,但没有匹配的DwmSetColorizationColor函数。有多种方法可以设置系统范围的着色,但我希望着色只影响我的应用程序 window。此外,Aero Glass™ 已从 Windows 8 和 10 中移除。
如何以在 Windows 8/10 上运行的方式使用 WinForms 在我的应用程序中包含这些效果?如果 WPF 可以呈现这些效果,它是如何实现的,我如何在 WinForms 上实现类似的效果?
经过几个月的搜索,我终于在 user32.dll
中找到了 . To achieve the glass effect on Windows 10, one must use the undocumented SetWindowCompositionAttribute 函数。
BOOL WINAPI SetWindowCompositionAttribute(HWND hwnd, WINCOMPATTRDATA* pAttrData)
其中 WINCOMPATTRDATA
结构的布局是:
struct WINCOMPATTRDATA {
DWORD attribute; // the attribute to query, see below
PVOID pData; //buffer to store the result
ULONG dataSize; //size of the pData buffer
};
和 attribute
可以有来自 DWMWINDOWATTRIBUTE 枚举的值。
当我在 Windows 10 上安装 AMD 图形驱动程序时,我注意到背景看起来很模糊,这是我想要在我的应用程序中实现的风格。
我试过使用 UpdateLayeredWindow, but it does not apply a blur effect. I have tried using DwmExtendFrameIntoClientArea and DwmEnableBlurBehindWindow 但我不确定如何自定义 window 着色 和图像叠加层。
有DwmGetColorizationColor函数,但没有匹配的DwmSetColorizationColor函数。有多种方法可以设置系统范围的着色,但我希望着色只影响我的应用程序 window。此外,Aero Glass™ 已从 Windows 8 和 10 中移除。
如何以在 Windows 8/10 上运行的方式使用 WinForms 在我的应用程序中包含这些效果?如果 WPF 可以呈现这些效果,它是如何实现的,我如何在 WinForms 上实现类似的效果?
经过几个月的搜索,我终于在 user32.dll
中找到了
BOOL WINAPI SetWindowCompositionAttribute(HWND hwnd, WINCOMPATTRDATA* pAttrData)
其中 WINCOMPATTRDATA
结构的布局是:
struct WINCOMPATTRDATA {
DWORD attribute; // the attribute to query, see below
PVOID pData; //buffer to store the result
ULONG dataSize; //size of the pData buffer
};
和 attribute
可以有来自 DWMWINDOWATTRIBUTE 枚举的值。