PyQt5调整窗口显示边框
在 windows 某些场景下调整窗口大小或者移动后就会导致里面的内容重绘(速度慢,卡顿,闪烁),其实在以前 windows 在低配置设备为了减少这种频繁绘制的情况,默认会开启这种效果,不过目前设备越来越好了就关闭了该功能。具体是在控制面板中 -> 调整 Windows 的外观和性能 -> 去掉勾选 拖动时显示窗口内容。
由于这个开关是全局状态的,而我们只需要在自己的窗口中实现该效果有两种方式。
一种是自己绘制一个边框效果,放开鼠标时才操作真正的窗口。
二是替换窗口的处理过程函数 wndproc 处理 WM_NCLBUTTONDOWN 消息事件。
今天讲第二种方法:
需要了解 SystemParametersInfo API 函数
SPI_GETDRAGFULLWINDOWS :确定是否允许拖拉到最大窗口
SPI_SETDRAGFULLWINDOWS :设置是否允许拖至最大窗口
效果就是这样的:
正如图片所看的那样,窗体在移动的时候,窗体并没有绘制出来,而是绘制出窗体的边框,等到窗体不在移动的时候就直接把窗体图像数据全部绘制出来,这样就避免了窗体在 ...