航空玻璃会导致很多人在尝试使用它时遇到问题。任何 alpha 值为 255 的东西似乎都被 DWM 视为透明,使用附加模糊来绘制它。我希望客户区域的一部分使用 Aero 玻璃,其余部分被视为不透明,因此我不必处理常见控件无法正确渲染的头痛问题。
MSDN 列出了一项功能DwmEnableBlurBehindWindow
,可让您将客户区域的一部分标记为被 DWM 模糊。它接受一个DWM_BLURBEHIND
指针,该指针具有指向HRGN
窗口区域的句柄。当我使用这个函数时,整个窗口通过加法混合变得透明,但只有我传递给的窗口区域DwmEnableBlurBehindWindow
变得模糊。有没有办法让窗口的其余部分变得透明?
我所拥有的看起来有点像:
blur.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;
blur.hRgnBlur = CreateRectRgn(0, 0, 90, 90);
blur.fEnable = true;
DwmEnableBlurBehindWindow(hwnd, &blur);
RECT rect;
GetClientArea(&rect);
FillRect(hdc, &rect, CreateSolidBrush(0));