2012-05-03 98 views
1

我正在处理一个项目,该项目需要图像中两个水平点之间的像素数量。我在Windows应用程序窗体中执行此操作。获取图像中两个点之间的像素数

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

我不明白这样做。 请帮忙。

+2

你几乎没有想法?如果你不得不在你手中的照片上做这件事,你会如何处理它?考虑一下,然后写一些可以做同样的代码。 – Ste

+0

你有哪些麻烦?获取用户点击的点数?计算这两点之间的水平距离?显示结果?人们会认为,你至少有一部分知道如何做。 –

回答

0

假设你的图像是使用从Control下来的任何控制,那么你将有机会获得Control.MouseClick事件(link)显示。

此活动使用MouseEventArgslink),它有一个属性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; 
    } 
} 
+0

这是相对于图像的像素密度?我想他不会显示1:1的关系,像素差异将是不正确的。当然,他需要图像与显示器的像素距离。 –

0

对于图像容器,我只是用一个图片,尽管这会与标签或控制任何你想要的工作。

以外的任何功能:

private Boolean clicked_once = false; 
private Point point1; 
private Point point2; 

然后我添加了一个鼠标点击事件(不是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()); 
    } 
} 

应该工作。