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程序时可以根据这两组值来设置默认的控件后字体大小。
windows上(SM_CXSCREEN|SM_CYSCREEN))和(VERTSIZE|HORZSIZE)的理解
最新推荐文章于 2024-08-04 19:29:17 发布