厘米到像素

时间:2011-01-22 11:44:49

标签: c# winforms math

如何在c#中将厘米转换为像素?

6 个答案:

答案 0 :(得分:19)

int CentimeterToPixel(double Centimeter)
{
    double pixel = -1;
    using (Graphics g = this.CreateGraphics())
    {
        pixel = Centimeter * g.DpiY / 2.54d;
    }
    return (int)pixel;
}

答案 1 :(得分:6)

您可以使用您所在的Graphics对象的 DpiX DpiY 属性 绘图(你必须拥有,因为在缺席的情况下转换毫无意义 某种图形上下文。)

DpiX DpiY 中,“D”代表 “点”或像素,而“i”代表“英寸”。所以,它会 将像素转换为英寸。然后你所要做的就是将英寸换成 厘米=> (x * 2.54)

此外,如果您想要更“精确”,请查看以下内容: HOWTO: How to Make an Application Display Real Units of Measurement

答案 2 :(得分:2)

像素和厘米是两个不同的单位,它们是根据用户的DPI设置计算的。要正确转换,您需要知道用户屏幕的DPI。

如果你有一个12.8厘米的显示器显示1280x1024图像,那么 你有每厘米100像素。

但是,您可以尝试使用Graphics.TransformPoints将像素转换为cm或相反。

答案 3 :(得分:1)

正如我在评论中所说,你必须提供更多信息。 (这是一个Windows窗体应用程序吗?ASP.Net?)

基本方法是:

  • 找出有问题的输出设备的DPI。 (它经常是96 [每英寸96个点],但你不能假设。)This thread可以帮助你做到这一点,如果它是一个Windows窗体应用程序。此外,Graphics类包含DpiXDpiY成员,因此您可以使用这些成员。
  • 将DPI转换为DPC [每厘米点数](DPC = DPI / 2.54)。
  • 将您的DPC值乘以厘米数。

答案 4 :(得分:1)

在WPF中,一厘米大约是37.8个与设备无关的像素。

答案 5 :(得分:1)

CM的长度= LenghtPixels * 2.54 / DPI

我认为您可以使用WMI获取每个显示的DPI,您正在搜索的值位于Win32_DisplayConfiguration类中的LogPixe字段下。

检查此链接,了解如何使用WMI检索数据:LINK