当前位置:  开发笔记 > 开发工具 > 正文

所有Windows PC显示器上的每英寸标准像素数是多少?GetDeviceCaps WinAPI调用中的(LogPixelsX)

如何解决《所有WindowsPC显示器上的每英寸标准像素数是多少?GetDeviceCapsWinAPI调用中的(LogPixelsX)》经验,为你挑选了2个好方法。

通过Windows PC显示器,我不是指Windows CE或手持设备等.

澄清
下面有些人错误地认为我在询问显示器上的DPI(每英寸点数)是多少.我要求的是GetCaps API调用中LogPixelsX的值:

LOGPIXELSX 沿屏幕宽度每逻辑英寸的像素数.

在我看过的例子中,无论屏幕DPI 如何,它都设置为88 .似乎是一个魔术数字常数.

在一个相关的问题中我使用GetDeviceCaps来计算当前的屏幕字体DPI.我发现的代码示例都有:

Const LOGPIXELSX = 88

对于所有显示器(甚至是宽屏与常规显示器),这普遍相同吗?如果没有,我如何找到当前显示器.(MSDN表示对于特定计算机上的所有监视器都是相同的.

在具有多个显示监视器的系统中,此值对于所有监视器都是相同的.



1> Mark Ransom..:

要回答您对问题的澄清:

LOGPIXELSX是您传递给GetDeviceCaps以获取当前监视器分辨率的参数(技术上是水平分辨率,但所有现代显示器具有相等的水平和垂直分辨率).是的,它总是88 - 如果你想从GetDeviceCaps获得不同的值,你会传递一个不同的值.例如,要获得每个像素的位数,您将传递BITSPIXEL常量12,这些常量常量在Windows API文件WINGDI.h中定义.

MSDN中的注释不是指参数,而是指返回的值.



2> Mark Ransom..:

Windows将始终具有96 DPI的分辨率,除非您在显示设置中更改它.在XP上,您可以在Display Properties-> Settings下的Advanced对话框中找到它; 我不知道它在其他版本的Windows中的位置.

你是正确的,GetDeviceCaps(LOGPIXELSX)将返回DPI,除了一点点警告.从Vista开始,Windows可能会对您的实际配置分辨率撒谎.您需要使应用程序具有DPI感知能力才能获得配置的真实情况.这是一个提供一些细节的Microsoft页面,特别强调Windows 7中的更改.

http://msdn.microsoft.com/en-us/library/dd464659(VS.85).aspx

另一个链接:

http://msdn.microsoft.com/en-us/library/ms701681(VS.85).aspx


88是LOGPIXELSX的值,它是您传递给GetDeviceCaps()以获取X轴上每英寸逻辑像素的值.
推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有