当前位置:  开发笔记 > 编程语言 > 正文

将像素转换为点数

如何解决《将像素转换为点数》经验,为你挑选了5个好方法。

我需要将像素转换为C#中的Points.我已经看到了关于这个主题的一些复杂的解释,但似乎找不到一个简单的公式.让我们假设一个标准的96dpi,我如何计算这个转换?



1> Mark Ransom..:

每英寸有72个点 ; 如果足以假设每英寸96像素,则公式相当简单:

points = pixels*72/96

有一种方法可以在Windows中获取每英寸显示器配置的像素数GetDeviceCaps.Microsoft有一个名为"开发DPI-Aware应用程序"的指南,请查找"创建DPI感知字体"部分.

无论显示器的实际分辨率如何,W3C都将像素测量px精确定义为1英寸的1/96,因此上述公式应该适用于所有网络工作.


72点每英寸不是一个有争议的项目,它是全面的!
通常PPI是每英寸像素的缩写,而不是每英寸的点数.也许这就是混乱的来源?每英寸的点数总是72; 感谢Xetius链接.
@David dpi依赖于显示,ppi是一个排版常数
@David那篇文章只是解释了为什么监视器具有可变DPI.PPI仍然是一样的.一英里的公里数不会因您驾驶的汽车而改变.假设96dpi通常不是一个好主意,但如果我们这样做,那么给定的公式是正确的.

2> Hejazi..:

如果您的代码位于以下形式,请尝试此操作:

Graphics g = this.CreateGraphics();
points = pixels * 72 / g.DpiX;
g.Dispose();



3> Joel Coehoor..:

假设96dpi是一个巨大的错误.即使假设是正确的,也可以选择缩放字体.因此,实际上可以显示10pts的字体集,就好像它是12.5pt(125%).


@MadSkunk 2008年9月,我们还没有能力发表评论.

4> Ian Boyd..:

从给定的开始:

一英寸有72个点(这就是一个点,即1/72英寸)

在150dpi的系统上,每英寸有150个像素.

1 in = 72pt = 150px(150dpi设置)

如果要根据像素(px)找到点(pt):

 72 pt    x pt
------ = -----                  (1) for 150dpi system
150 px    y px

重新排列:

x = (y/150) * 72                (2) for 150dpi system

所以:

points = (pixels / 150) * 72    (3) for 150dpi system



5> 小智..:

WPF使用System.Windows.FontSizeConverter将点转换为像素.FontSizeConverter使用System.Windows.LengthConverter.LengthConverter使用系数1.333333333333333333将点(p)转换为像素(x):x = p*1.3333333333333333

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有