如何在c#中将厘米转换为像素?
答案 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?)
基本方法是:
Graphics
类包含DpiX
和DpiY
成员,因此您可以使用这些成员。答案 4 :(得分:1)
在WPF中,一厘米大约是37.8个与设备无关的像素。
答案 5 :(得分:1)
CM的长度= LenghtPixels * 2.54 / DPI
我认为您可以使用WMI获取每个显示的DPI,您正在搜索的值位于Win32_DisplayConfiguration类中的LogPixe字段下。
检查此链接,了解如何使用WMI检索数据:LINK