我正在做一个项目,该项目需要图像中水平的两点之间的多个像素。我在 Windows 应用程序表单中执行此操作。
基本上,当用户单击图像中的一个点然后单击另一点时,他应该以像素数的形式获得水平距离。
我没有任何想法去做。请帮忙。
假设您的图像使用任何继承的控件显示,Control
那么您将可以访问Control.MouseClick
事件(链接)。
此事件使用MouseEventArgs
( link ),它具有属性 X。
从这一点上应该很清楚。
编辑:添加了这个非常简单的示例:
private int? x1;
private void MyImageControl_MouseClick(object sender, MouseEventArgs e)
{
if (x1.HasValue)
{
MessageBox.Show("Difference of " + Math.Abs(e.X - x1.Value).ToString());
x1 = null;
}
else
{
x1 = e.X;
}
}
对于图像容器,我只使用了一个图片框,尽管它可以与标签或您想要的任何控件一起使用。
在任何功能之外:
private Boolean clicked_once = false;
private Point point1;
private Point point2;
然后我添加了一个 MouseClick 事件(不是 Click 事件):
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (clicked_once == false)
{
clicked_once = true;
point1 = e.Location;
}
else if (clicked_once == true)
{
clicked_once = false;
point2 = e.Location;
int distance = Math.Abs(point1.X - point2.X);
MessageBox.Show("Distance of pixels horizontally: " + distance.ToString());
}
}
应该管用。