【发布时间】:2012-12-19 00:31:31
【问题描述】:
我需要计算鼠标在屏幕上点击的两个地方之间的距离。
target(x & Y) & source(X & Y) 在鼠标移动事件(e.X & e.Y)上填充
我有distance = Math.Sqrt(Math.Pow(targetX - sourceX, 2) + Math.Pow(targetY - sourceY, 2));
这给了我一个结果,但老实说,我不确定测量的单位是什么或如何转换它。如何将该结果转换为有意义的结果,例如厘米或英寸?我猜我需要考虑屏幕分辨率?
更新 我真的只是在消磨时间。不是在寻找一个很好的解决方案,只是在寻找可行的东西。它只会持续一两天。
这是MoveMove 事件和调用。应该在之前发布所有内容以便更清楚。
private void HookManager_MouseMove(object sender, MouseEventArgs e)
{
labelMousePosition.Text = string.Format("x={0:0000}; y={1:0000}", e.X, e.Y);
AddDistance(Convert.ToDouble(e.X), Convert.ToDouble(e.Y));
}
private void AddDistance(double targetX, double targetY)
{
if (sourceX != 0 && sourceY != 0)
{
double distance = Convert.ToDouble(lblDistanceTravelled.Text);
distance =+ Math.Sqrt(Math.Pow(targetX - sourceX, 2) + Math.Pow(targetY - sourceY, 2));
lblDistanceTravelled.Text = distance.ToString();
}
sourceX = targetX;
sourceY = targetY;
}
【问题讨论】:
-
包括您如何填充“targetX”和“sourceX”会很有帮助(我猜它是像素顺便说一句)
-
打算使用的距离是多少?计算机屏幕上两点之间的距离永远不会以英寸/厘米为单位,需要大量信息才能计算出来(屏幕 DPI 等)。
-
@Rawrgramming 老实说我在圣诞节前的工作很无聊。项目处于搁置状态。昨晚我的妻子问我是否知道一天内我在屏幕上移动了多少英寸。你可以猜到其余的! :)
-
@EricJ。欣赏链接,但我正在消磨时间,所以想自己做:)