我有戴尔笔记本电脑北纬5420.
内置显示器的宽度为12.20英寸,高度 6.69 6,86英寸。
操作系统是Windows7。屏幕分辨率设置为1600 x 900(首选分辨率)。
此外,Windows7配置了“设置自定义文本大小(DPI)”100%(9点Segoe UI,每英寸96像素)。我认为这意味着Windows7认为我的显示器的1英寸使用96像素。
如果我将1600像素除以12.20英寸(或900乘6,86),则结果大约为131,1。
系统的预期DPI应该是多少?横向的?垂直的?根据这种配置,在我的屏幕中,一个正方形将被视为一个矩形?我错过了什么吗?
原始问题现在没有意义。分辨率和物理尺寸现在采用相同的16:9格式。
现在我的问题是,实际屏幕看起来每英寸大约有131个像素,但OS认为它有96个像素。如果我告诉程序写一行1英寸的行将在屏幕上打印多少像素? 96或131?如果我告诉一个程序写入131像素,我在屏幕上放一个标尺我会测量什么?
编辑原因:抱歉有任何不便之处。我使用标尺重新检查了这些措施,我在垂直测量中做了一个错误。
答案 0 :(得分:3)
GetDeviceCaps旨在返回此信息(HORZSIZE
/ VERTSIZE
,LOGPIXELSX
/ LOGPIXELSY
)。然而,
GetDeviceCaps
报告显示驱动程序提供的信息。如果显示驱动程序拒绝报告任何信息,GetDeviceCaps
将根据固定计算计算信息。如果显示驱动程序报告无效信息,GetDeviceCaps
将返回无效信息。此外,如果显示驱动程序拒绝报告信息,GetDeviceCaps
可能会计算不正确的信息,因为它假定固定DPI(96 DPI)或固定大小(取决于显示驱动程序执行和未提供的信息) 。 不幸的是,实现Windows显示驱动程序模型(WDDM)(在Windows Vista中引入)的显示驱动程序会导致GDI无法获取信息,因此GetDeviceCaps必须始终计算信息。
对于我的Windows 7笔记本电脑,HORZSIZE
和VERTSIZE
完全错误。
答案 1 :(得分:2)
96像素/英寸是虚拟的,与实际的屏幕尺寸无关。假设您有一个4000 * 3000像素的屏幕,LOGPIXELX仍然会返回96(标准设置)。请阅读this article以获得全面的解释。
在我的电脑上BTW HORZSIZE和VERTSIZE也是完全错误的。