在win32中更改无边框窗口的颜色

Posted

技术标签:

【中文标题】在win32中更改无边框窗口的颜色【英文标题】:change color of borderless window in win32 【发布时间】:2021-01-03 09:31:43 【问题描述】:

我正在创建一个无边框窗口,类似于https://github.com/melak47/BorderlessWindow,并使用它来创建交换链并使用 vulkan 进行绘制。

为了获得无边框窗口(带有航空阴影),我使用:DwmExtendFrameIntoClientArea 最多 1 个像素。 我可以用我的交换链在最后一个像素边框上绘制。经过一番谷歌搜索后,我明白这是唯一的方法。

不幸的是,在调整大小时,无论我如何与合成器同步,我仍然偶尔会看到 亮白色 边框闪烁。

为了使这一点可以接受,我想为边框使用更中性的颜色。我如何做到这一点?

编辑:如果我将边框增加到 10 像素,我会得到: (绿色和红色框是vulkan绘制的,没有透明度,框架清零alpha)

这个白色是从哪里来的?

注意:这不是强调色。

【问题讨论】:

【参考方案1】:

我找到了解决办法。

有一个未记录的函数来设置窗口的附加 DWM 设置:https://gist.github.com/ysc3839/b08d2bff1c7dacde529bed1d37e85ccf

这也用于制作模糊的透明度,并且可以使用 ACCENT_ENABLE_GRADIENT 枚举更改边框颜色。

【讨论】:

以上是关于在win32中更改无边框窗口的颜色的主要内容,如果未能解决你的问题,请参考以下文章

Electron曲线解决无边框窗口模式下,关闭缓慢的问题。

MFC窗口边框问题

易语言利用窗口消息实现无边框调整和移动窗口

Win10无边框对话框加阴影

Win10无边框对话框加阴影

winform 怎么实现无边框阴影