1

我正在做一个项目,该项目需要图像中水平的两点之间的多个像素。我在 Windows 应用程序表单中执行此操作。

基本上,当用户单击图像中的一个点然后单击另一点时,他应该以像素数的形式获得水平距离。

我没有任何想法去做。请帮忙。

4

2 回答 2

0

假设您的图像使用任何继承的控件显示,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;
    }
}
于 2012-05-03T17:19:01.413 回答
0

对于图像容器,我只使用了一个图片框,尽管它可以与标签或您想要的任何控件一起使用。

在任何功能之外:

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());
    }
}

应该管用。

于 2012-05-03T17:41:41.233 回答