【发布时间】:2011-01-22 11:44:48
【问题描述】:
如何在 c# 中将厘米转换为像素?
【问题讨论】:
-
了解像素大小(例如 1024x768)和分辨率(例如每英寸 72 点)之间的差异很重要。在通常的用法中,分辨率通常实际上是指像素大小。
-
tnx 我确实将 winforms 添加到我的标签中
如何在 c# 中将厘米转换为像素?
【问题讨论】:
int CentimeterToPixel(double Centimeter)
{
double pixel = -1;
using (Graphics g = this.CreateGraphics())
{
pixel = Centimeter * g.DpiY / 2.54d;
}
return (int)pixel;
}
【讨论】:
您可以使用您所在的 Graphics 对象的 DpiX 和 DpiY 属性 绘图 (你必须拥有,因为在没有 某种图形上下文。)
在DpiX和DpiY中,“D”代表 “点”或像素,而“i”代表“英寸”。所以,它会 将像素转换为英寸。然后您所要做的就是将英寸转换为 厘米 => (x * 2.54)
此外,如果您想更“精确”,请查看以下内容: HOWTO: How to Make an Application Display Real Units of Measurement
【讨论】:
像素和厘米是两个不同的单位,它们是根据用户的 DPI 设置计算得出的。要正确转换,您需要知道用户屏幕的 DPI。
如果您有一个 12.8 厘米的显示器显示 1280x1024 的图像,那么 每厘米有 100 个像素。
但是您可以尝试使用Graphics.TransformPoints 将像素转换为厘米或相反。
【讨论】:
在 WPF 中,一厘米大约是 37.8 个设备独立像素。
【讨论】:
CM 长度 = LenghtPixels * 2.54 / DPI
我认为您可以使用 WMI 获取每个显示器的 DPI,您要搜索的值在类 Win32_DisplayConfiguration 中,在 LogPixe 字段下。
查看有关使用 WMI 检索数据的链接:LINK
【讨论】:
正如我在评论中所说,您必须提供更多信息。 (这是一个 Windows 窗体应用程序吗?ASP.Net?)
基本方法是:
Graphics 类具有 DpiX 和 DpiY 成员,因此您可以使用它们。【讨论】:
Graphics 得到它,我已经更新了一个链接。