SkywalkerJi / mdt

Yu-Gi-Oh! Master Duel Translation Script
https://ygo.御坂美琴.cn
GNU General Public License v3.0
688 stars 91 forks source link

bug: 获取正确的客户端画面分辨率应该使用GetClientRect方法 #30

Closed chunibyo-wly closed 2 years ago

chunibyo-wly commented 2 years ago

https://github.com/SkywalkerJi/mdt/blob/89f086b95bbf04987021216aacecf95b914740cb/mdt_cv.py#L87 GetWindowRect获得的分辨率应该是包含标题栏的,这个会导致使用模板匹配方法的时候难以正常的将屏幕位置算出来。 这里的box大小如果客户端设置的是1600x900,打印出来应该就是这个值。 如果需要用到屏幕坐标,再通过win32gui.ClientToScreen(hWnd, (0, 0))方法获得Client位置就行了。

不过这个有一个问题是看起来这里取得的值是和大佬你的图像hash绑定的,所以我就不方便直接修改了。

chunibyo-wly commented 2 years ago

image 或者直接把接口改成这样,啥也不用改

SkywalkerJi commented 2 years ago

测试完可以pr。图像hash只和卡图部分有关,BOXES 坐标控制的卡图匹配位置。

我之前测试用的截图: https://drive.google.com/drive/folders/1fbUY6CUfV9TA5i4r7jBVbhmSzu2BzUa-?usp=sharing