2012-05-03 65 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()); 
    } 
} 

應該工作。