在用户输入上转换mm和inch两个像素

时间:2016-06-06 08:41:51

标签: c# .net wpf

我从cm中获取用户的值。意思是我放了一个尺寸正好为1厘米的刻度,用户点击刻度的起点和终点,从那里我得到1厘米像素的总数。现在我想用英寸转换那个像素怎么做?

double a = p2.X - p1.X;
double b = p2.Y - p1.Y;
distance_of_pixcel = (Math.Sqrt(a * a + b * b))  ; //Return total no. of pixcel in 1cm

distance_of_pixcel = distance_of_pixcel / 0.39;  //1 cm = 0.393701 inch

这是正确的方法吗?我每次都没有获得相同的价值。

1 个答案:

答案 0 :(得分:1)

我建议进行3项改进:

  1. 使用大于1厘米的东西
    在最差情况下,像素密度(PPI)<1。 50你可以有大约10%的偏差。
  2. 使用将cm转换为英寸的确切值
    你在那里失去了另外~1%的精度。您可以要求用户测量其显示器的整个宽度/高度 - 这将产生最大精度并输入该值而不是单击相距1厘米的像素。
  3. 独立缩放宽度和高度
    即使很难,现在标准的是方形像素,有可能有人仍在使用带有矩形像素的旧显示器。
  4.   

    无法测量整个显示器,但如果我使用5厘米那么它会起作用吗?

    它肯定会提高你的精确度。这一切都取决于您需要多少精确度量,以及为此做出哪种努力合理

    如果您的用例非常区域化(例如只有一个国家/地区),您可以要求用户使用他们可能随身携带的东西(多种选项是理想的),例如普通钞票代替。预览屏幕上熟悉的内容,以便用户查看其设置是否正确。

    例如:拖动滑块直到屏幕上的钞票与真实钞票相同