关于截图
vb吧
全部回复
仅看楼主
level 8
静谧幽光
楼主
以下是全屏截图代码,去掉1.25后截出来的图就不完整了,请问吧友们知道1.25是什么意思吗
2022年06月11日 11点06分
1
吧务
level 14
总裁大人👻
应该是DPI缩放倍数
2022年06月11日 11点06分
3
静谧幽光
我去研究下
2022年06月11日 11点06分
level 8
静谧幽光
楼主
1.25是试出来的,就不放对比图了,帖子总被吞
2022年06月11日 11点06分
4
level 8
静谧幽光
楼主
确实和DPI缩放有关,系统设置里显示器分辨率为1920*1080,然而vb里通过screen对象或GetSystemMetrics函数获取的DPI都比系统显示的少1.25倍,本来想靠代码计算出来的,水平不够只能先当常数来用了
2022年06月11日 12点06分
5
余思培
DPI感知应该可以让你获取真实像素宽度与高度
2022年06月11日 13点06分
level 4
连2006
用96/72代替1.25
2022年06月12日 15点06分
6
静谧幽光
这两个是什么值
不过看到这里我也想起来,昨天查的时候有个api能获取物理分辨率和分辨率(毫米),因为得出来的值是两位数我就没注意,现在想想可以试一试
2022年06月12日 15点06分
静谧幽光
@静谧幽光
捣鼓完那个api也没能计算出1.25,无所谓了,小瑕疵罢了,问题不大
2022年06月12日 15点06分
yjryym
别乱忽悠楼主,125%DPI的1.25来自 120/96,120就是它当前的DPI值,100%DPI的值就是96。关72什么事情?
2022年06月15日 10点06分
yjryym
@静谧幽光
根本不需要任何API,VB6本来就自带DPI自动适配,100%为1像素=15缇,125%为1像素=12缇,150%为1像素=10缇。
2022年06月15日 10点06分
level 13
橡皮树😈
1.25是显示器缩放与布局的值(125%),如果你把显示器的缩放与布局设置为100%,你的代码就可以取消1.25了
2022年06月13日 09点06分
7
level 8
静谧幽光
楼主
研究了下DPI感知,还是没收获,没VB相关的范例,也不知道是不是这样用,姑且没报错。三个参数都试了,返回值一样。
2022年06月16日 14点06分
8
静谧幽光
第一张图的print输出应为screen.width,放错图了,还是不能返回正确的值
2022年06月16日 14点06分
yjryym
个人建议最好不要用这三API,而是用清单文件(就是控件显示XP主题的那个manifest)。VB6的Screen.TwipsPerPixelX/Y很有可能在你调用这三API之前就已经先初始化完成了,所以你获取的是之前的。只有manifest设置才保证DPI感知的设置在整个进程的所有代码之前执行。
2022年06月16日 15点06分
yjryym
@yjryym
另外再说这三API都是新系统才有的,一个Vista、一个Win8.1、一个Win10,一个比一个要求高,用了它们你也很难做低版本系统兼容。而manifest就不存在这个问题,XP系统会自动忽略它不认识的manifest字段,不会因为找不到API而报错。
2022年06月16日 15点06分
yjryym
要说的话,其实Windows从Win95开始就支持DPI了,这也就是为啥98年的VB6也自带DPI适配机制,之前早期的DPI都只有应用自己手动缩放这一种模式,说白了我们设置manifest也好,还是调用API设置DPI感知也好,其实就一个目的:恢复成Win95~XP的DPI模式。
2022年06月16日 15点06分
level 14
yjryym
你要在VB6IDE中调试的话,请用以下设置:
如果你要为发布的exe,请将以下内容写入到manifest文件中,并嵌入exe的类型为24(提示VB6自带的资源编辑器实现不了)ID为1的资源中:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="
http://schemas.microsoft.com/SMI/2005/WindowsSettings
">true</dpiAware>
<dpiAwareness xmlns="
http://schemas.microsoft.com/SMI/2016/WindowsSettings
">PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
2022年06月16日 15点06分
9
level 14
yjryym
这是系统缩放和应用缩放的区别:
2022年06月16日 15点06分
10
1