我只想知道像素单位是否是一个不变的量,是否可以将像素转换成厘米?
一英寸等于2.54厘米;如果假设每英寸有96像素就足够了,公式就非常简单:
厘米 = 像素 * 2.54 / 96
Microsoft Windows有一种获取显示器每英寸配置像素的方法叫GetDeviceCaps。 Microsoft有一个名为“Developing DPI-Aware Applications”的指南,请查找“Creating DPI-Aware Fonts”部分。
将像素转换为厘米取决于显示图像的媒介(如显示器、激光打印机等)的DPI(每英寸点数)。
http://wiki.answers.com/Q/How_do_you_convert_pixels_into_centimeters
您可以将像素转换为厘米,但这不是一个一致的转换。它取决于所涉及的显示设备的大小和分辨率。像素的定义不会改变,但像素的大小在不同的显示设备上会有所不同。
我使用 JavaScript 创建了一个 Adobe Illustrator CS3 文档来测试 1 厘米 = 28.347 像素的值,并且完全匹配。
我知道这个问题很旧,但我一直在尝试找到答案,决定分享我的发现。
祝好
public float CentimeterToPixel(int valueCM, float dpi)
{
return 0.03937007F * dpi * valueCM;
}
如果你想让它更精确,你需要接近dpiX和dpiY。
例如,在C# winforms中,您可以添加一个来自System.Drawing和System.Drawing.Drawing2D的Graphics对象,然后获取其dpiX和dpiY值,并根据它设计您的区域以进行更准确的计算(在某些情况下,水平分辨率与垂直分辨率不同)。请参见下面的代码。
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
namespace MyApp
{
static class MyAppClass
{
private static Bitmap bmp = new Bitmap(1, 1);// a simple bitmap that automaticaly created base on current screen resolution
private static Graphics graphic = Graphics.FromImage(bmp);
public static float CentimeterToPixelWidth(int valueCM)
{
return 0.03937007F * graphic.DpiX * valueCM;
}
public static float CentimeterToPixelHeight(int valueCM)
{
return 0.03937007F * graphic.DpiY * valueCM;
}
}
}
图片元素
因此它取决于两个因素:
(a) 分辨率 (b) 物理屏幕尺寸
因此,如果您将屏幕尺寸除以分辨率,这应该会给您每个像素的厘米数。