windows上(SM_CXSCREEN|SM_CYSCREEN))和(VERTSIZE|HORZSIZE)的理解


GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN)是获取显示设备的分辨率,就是我们在windows设置的分辨率。

GetDeviceCaps()的VERTSIZE,HORZSIZE是以mm为单位描述设备(这里只考虑显示设备)的尺寸,它跟分辨率大小没有关系,但它跟分辨率的比例描述了单位内显示像素的个数。以下是我在pc和ce手机上不同分辨率的一组试验值:

PC:
GetSystemMetrics(SM_CXSCREEN)    GetSystemMetrics(SM_CYSCREEN)    GetDeviceCaps(dc,VERTSIZE)    GetDeviceCaps(HORZSIZE)    比例
1440                900                400            250            1440/400 = 900/250 = 3.6
1280                760                416            250            1280/416 = 250/250 ~ 3.0
800                600                333            250            800/333  = 600/250 ~ 2.4

CE/手机
GetSystemMetrics(SM_CXSCREEN)    GetSystemMetrics(SM_CYSCREEN)    GetDeviceCaps(dc,VERTSIZE)    GetDeviceCaps(HORZSIZE)    比例
480                800                48            80            480/48 = 800/80 = 10.0

(以上水平和垂直方向比例有时不完全相等,所以显示的像素不一定是正方形)。
得出结论:
1).水平分辨率/HORZSIZE 越接近  垂直分辨率/VERTSIZE 设备上显示的像素点越接近等于正方形,反之会出现拉伸。
2).分辨率/(HORZSIZE|VERTSIZE) 比例越大单位内显示的像素数越多,显示质量越高。

在开发以像素为单位的gui程序时可以根据这两组值来设置默认的控件后字体大小。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值