Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows 10下使用DWM Blur效果边缘会出现模糊,顶部出现多余横线 #132

Open
mentalfl0w opened this issue Sep 9, 2024 · 15 comments
Labels
enhancement New feature or request

Comments

@mentalfl0w
Copy link
Contributor

复现流程:直接编译仓库,使用示例程序,在Windows 10下使用DWM Blur效果,窗口边缘会出现多余模糊(这部分本该是窗口阴影),顶部出现多余横线(约1px,系统日间模式为纯白,夜间模式为纯黑)。
图片:
image
image

@SineStriker
Copy link
Contributor

为啥我的win10上没复现

@mentalfl0w
Copy link
Contributor Author

我用的是Qt 6.6.3,MinGW编译的,测试程序用的是QtWidget的例子,我刚测试了一下QtQuick的也有这个问题,边缘的空隙在系统处于深色模式的时候更加明显。
image

@SineStriker
Copy link
Contributor

我是qt6.6.1,我有空试试你的版本

@SineStriker
Copy link
Contributor

我用的是Qt 6.6.3,MinGW编译的,测试程序用的是QtWidget的例子,我刚测试了一下QtQuick的也有这个问题,边缘的空隙在系统处于深色模式的时候更加明显。 image

我用了 Qt 6.6.3 MinGW 11.2 编译,依旧没有复现这个问题。请问你用的 Windows 10 的版本是多少,Windows SDK 的版本是多少。

@mentalfl0w
Copy link
Contributor Author

我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。

@SineStriker
Copy link
Contributor

我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。

我是 Windows 10 22H2(19045.4780)。。。暂时测不了

@mentalfl0w
Copy link
Contributor Author

嗯嗯,或许可以看看别的用户是否也有相关问题。主要是我的设备不是Mac就是Windows 11,实在找不到Windows 10的设备了,有用户反馈我才做的测试,发现也出现了相应问题。

@wangwenx190
Copy link
Collaborator

dwm blur 是有这个问题。这个效果是用私有API强行开出来的,如果你想要传统的模糊效果(非亚克力、非云母),可以自己用DwmEnableBlurBehindWindow搭配透明的窗口背景来实现。

@SineStriker
Copy link
Contributor

我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。

你可以试试把src/widgets/widgetwindowagent_win.cppsetupWindows10BorderWorkaround的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。

@mentalfl0w
Copy link
Contributor Author

我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。

你可以试试把src/widgets/widgetwindowagent_win.cppsetupWindows10BorderWorkaround的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。

顶上多余的白线解决了,模糊化的问题仍然存在。
image

@SineStriker
Copy link
Contributor

我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。

你可以试试把src/widgets/widgetwindowagent_win.cppsetupWindows10BorderWorkaround的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。

顶上多余的白线解决了,模糊化的问题仍然存在。 image

那可能就是blur水土不服了,本来就是逆向来的。

@SineStriker
Copy link
Contributor

或者,你可以在win10上关掉编译选项QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS,这样整个系统边框都会被隐藏,可能就没这个问题了。

@mentalfl0w
Copy link
Contributor Author

mentalfl0w commented Sep 10, 2024

我用的是Windows 10 on Arm64,版本号是21390.1,因为是mingw编译就没有安装Windows SDK,之前反馈的用户用的是Windows 10 22H2(19045.4842),Qt 6.5.1, msvc,也同样出现了这个问题。

你可以试试把src/widgets/widgetwindowagent_win.cppsetupWindows10BorderWorkaround的实现全部注释掉,再看看问题会不会复现。这个函数是为了解决windows10开启无标题栏以后系统上边框消失的问题的,具体做法就是窗口重绘时在最顶上画一条黑线(反正微软就是这么做的,这个参考了 Windows Terminal 的代码)。有可能是开启blur以后与这个workaround产生冲突了。

顶上多余的白线解决了,模糊化的问题仍然存在。 image

那可能就是blur水土不服了,本来就是逆向来的。

是的,其他几个效果(Acrylic,mica,mica-alt)在Windows 10下也不能开启,我索性就让Windows 10下都不开启模糊化效果了。Windows 10明年支持就到期了,现在再往里面投入应该收益不大,Windows 11下没问题就OK,不过Windows 11下的Acrylic和Mica之类的效果都有各种各样的问题,只有DWM是正常的,不过有一个可以用就行了。

dwm blur 是有这个问题。这个效果是用私有API强行开出来的,如果你想要传统的模糊效果(非亚克力、非云母),可以自己用DwmEnableBlurBehindWindow搭配透明的窗口背景来实现。

其余的可以自己加蒙版自定义。

或者,你可以在win10上关掉编译选项QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS,这样整个系统边框都会被隐藏,可能就没这个问题了。

image
关闭后这个边缘模糊的问题解决了,😂新的问题又出现了,Windows的原始边框出来了

@SineStriker
Copy link
Contributor

很烦。那win10上还是不要用了吧。。。我看你的仓库里还有一个 win10 边框的 issue,那个方便的话也开个issue吧。这个 issue 留着不关。

@SineStriker SineStriker added the enhancement New feature or request label Sep 10, 2024
@mentalfl0w
Copy link
Contributor Author

很烦。那win10上还是不要用了吧。。。我看你的仓库里还有一个 win10 边框的 issue,那个方便的话也开个issue吧。这个 issue 留着不关。

OK,#134 已经开好了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants