2012-05-03 3 views
1

이미지에서 수평 인 두 점 사이의 픽셀 수를 필요로하는 프로젝트 작업 중입니다. 나는 창 신청 양식에서 이것을하고있다.이미지의 두 점 사이의 픽셀 수 얻기

기본적으로 사용자가 이미지의 한 지점을 클릭 한 다음 다른 지점을 클릭하면 픽셀 수에 따라 수평 거리를 가져야합니다.

나는 그것을 할 생각이 없습니다. 도와주세요.

+2

문자 그대로 아이디어가 없습니까? 손에 든 사진을 찍어야한다면, 어떻게 접근 할 것입니까? 그것에 대해 생각하고 똑같이 할 수있는 코드를 작성하십시오. – Ste

+0

이 중 어느 부분에 문제가 있습니까? 사용자가 클릭 한 지점을 가져 오는 중? 그 두 점 사이의 수평 거리를 계산합니까? 결과를 표시 하시겠습니까? 하나는이 부분의 적어도 일부분을 수행하는 방법에 대한 아이디어가 있다고 생각할 것입니다. –

답변

0

Control의 컨트롤을 사용하여 이미지가 표시된다고 가정하면 Control.MouseClick 이벤트 (link)에 액세스 할 수 있습니다.

이 이벤트는 그 시점에서 꽤 명확하게해야 속성 X의

이있는, MouseEventArgs (link)를 사용합니다.

편집 : 추가이 매우 간단한 예제 : 이미지 컨테이너

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

,이 라벨 또는 무엇이든 제어 당신이 원하는 작업을 것입니다하지만 난 그냥하는 PictureBox를 사용하고 있습니다. 어떤 기능의

외부 :

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

작동합니다 : 다음

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

그리고 나는 마우스 클릭 이벤트 (안 Click 이벤트)을 추가했다.

관련 문제