Open JeffersonQin opened 3 years ago
Magpie不检测DPI缩放,因此建议设置窗口的“高DPI缩放替代”,README里提到了这一点。
据我所知光标是不受DPI影响的,它的大小由系统设定。光标的移速也不受DPI影响,Magpie将光标从窗口的相对位置映射到全屏的相对位置,无需考虑DPI缩放。
@Blinue 我按照您说的试了一下,很遗憾还是有相同的问题。您有一点说得对:光标本身时不受DPI影响的,然而,光标的绘制是受DPI影响的。我这里所说的光标移动速度,是开启了设置选项中的”缩放时调整光标速度“的选项时的光标速度。此时的光标速度您本来是用srcClient
和dst
计算得来的,然而,我这里指出的是,srcClient
本身没有考虑DPI缩放,从而导致光标速度的混乱。
您可能会疑惑为什么光标映射不受影响。因为在光标映射部分,计算采用了两次相对值,所以直接offset掉了,故不受影响。
我碰到过多次类似的问题,所以对此还是比较有自信的🤣
类似问题:
设置“高DPI缩放替代”之后源窗口大小应该是不受DPI缩放影响的,在我的电脑上获取的源窗口大小始终是正确的(DPI缩放125%)。因为我无法复现,这个问题可能需要你自己解决(或者只是编译自己的版本),寻找可靠的方法获取源窗口大小,目前使用的API是GetClientRect,一般来说它会考虑DPI缩放。
你是目前唯一报告这个问题的人,所以这应该不是一个普遍的问题。
Runtime我将全面重写,包括FPS的渲染,因此暂时不要在这些地方贡献。
我记得 GetClientRect
考虑DPI缩放的前提是进程是 DPI Aware 的,所以到底是不是 actual size 我觉得可能还有待讨论。以及如果无法复现的话,尝试短暂地将缩放调整至150%然后观察不同情况下和Magpie情况下的鼠标大小?以及尽可能地将原窗口变小,这样观察到的现象会越明显。麻烦您了,谢谢您的关注
以及,我按照您的说法试了之后,如果在对应用程序进行了“高DPI缩放替代”后返回的窗体大小会是真是窗体大小的话,我使用了我自己的某个手动对DPI进行适配的WPF项目 (WPF是默认DPI Aware的) 进行尝试,却发现仍然可以正常使用,所以感觉有点矛盾
好的 谢谢您,我自己到时候自己用自己编译的吧,以及可能的话我会让别人帮忙测试一下,看看这个问题是否普遍。
破案了。在系统设置界面,鼠标指针大小不是100%时会出现问题,但问题仅出现在鼠标指针为系统指针的情况下,自定义鼠标指针不受影响。(前面在推summer pockets就是好的)但是我也想不出这个问题该怎么解决了,先搁置着吧。
我已经注意到这个问题了,系统某些时候会放大原生的光标,但 Magpie 绘制的光标仍然是原始大小。我会寻找修复这个 bug 的方法
如题。
现在的光标速度直接使用了
srcClient
的大小,然而这个大小其实并没有考虑到 DPI 缩放问题(虽然没有仔细读代码),所以会导致在高 DPI 显示下,光标速度变慢的问题,我之后可能会提交一个 pr 来修复这个问题。光标大小同理,见下图。举个例子,我的显示器的 DPI 为 120 (125%),将 CursorManager 中部分代码修改为如下可以正常工作:
光标大小: