-
Notifications
You must be signed in to change notification settings - Fork 434
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
对HiDPI支持有问题 #138
Comments
有限时间内我没法改。我个人不用ocr,我看过一些高dpi的文章但还是不会。 |
其实是这样的,截图您拿到的画面是对的,但是展示截图的窗口有dpi问题,所以才会出现黑边。 |
因为我之前的那个项目刚遇到这个问题,所以应该是这个问题。 |
我不是Owner啊:joy:,我是Collaborator,那些代码不是我写的。我一直用hook,如果以后我要用到ocr了也许会研究吧,我只代表我自己现在不会改。 |
🤣好的好的(我也不太了解情况 |
稍微测试了一下,确实有点问题。 |
这个是针对WinForms的,而且我们是直接调Win32 API实现的截图,并不是窗口本身显示有问题。 |
WPF默认是System级别的DPI Aware,只要运行程序后所在屏幕没有改变DPI,就是DPI Aware的,但好像只适用于WPF自己,程序员创建的字体和图片什么的要写代码处理。 |
@HumphreyDotSln @imba-tjd 确实 您说的是对的 其实只要在创建窗口时手动计算一下大小就行 辛苦了 |
我也有这个问题(我的DPI是125%),尤其是插上第二个显示屏的时候,全屏截图的ScreenCaptureWindow会明显超出我显示屏的大小,而且窗口截图也一直不准确。 我之前写过一个解决方案,就直接把ScreenCaptureWindow全屏显示,让系统自己去计算窗口大小,然后我计算Max(图片高度/窗口高度,图片宽度/窗口宽度)得到图片与窗口之间的比值,最后用这个比值把窗口上画的框缩放就好了。我建一个Pull Request,大佬有空的话能看一下是否可行吗 |
@jsc723 我感觉不用这么麻烦 直接用p/invoke可以读到当前屏幕的dpi。我看到代码库里这方面的代码有写,只是在处理的时候忘记掉用了。 |
@JeffersonQin @HumphreyDotSln 我懂了,只要把
改成
就好了。因为Width和Height单位是device-independent unit(Width等于PixelWidth*96/DPI),已经考虑的DPI的影响,所以也不需要再调用p/invoke获取DPI了 |
关于哪一项功能
屏幕OCR相关
问题描述
如果系统DPI缩放不是100%,则会出现该问题
应用版本
2.7
系统信息
Windows10 x64
错误信息
附加截图
绿色阴影是黑框,即不正常的表现。
解决方案:
可以参考我的个人项目Ayase
我推断是使用P/Invoke调用Win32API时忘记考虑DPI缩放问题了。
我的解决方案:
PrimaryScreen
: https://github.com/JeffersonQin/Ayase/blob/master/Ayase/ScreenLib/PrimaryScreen.csThe text was updated successfully, but these errors were encountered: