2013-06-19 3 views
1

C#에서 Windows 기반 응용 프로그램을 개발하려고합니다. 양식에 이미지 컨트롤이 있고 스캔 한 평면도 이미지가 있습니다. 실제 바닥의 사용자로부터 x와 y 좌표를 얻었고 이미지의 같은 위치에 정확히 작은 원을 그려야합니다. 이것은지도상의 사용자 위치를 보여줍니다.평면도 스캔 한 이미지를 화면 픽셀로 조정합니다.

문제는 실제 좌표를 화면 픽셀과 동일시 할 수 없다는 것입니다. 그래서 우리는 조절을위한 공식을 얻을 필요가 있습니다. 조정할 수있는 공식이 있습니까? 시행 착오를 통해 조정할 수 있습니다. 또한 변환을 조정하면 현재 화면 해상도를 기반으로합니다. 화면 해상도에 상관없이 조정할 수있는 수식이 있으므로 어떤 해상도에서도 모든 화면 크기로 응용 프로그램을 실행할 수 있습니다.

+0

은 WPF 옵션입니다. 당신은 WPF에서 이것을 매우 쉽게 할 수 있습니다. –

+0

불행히도 응용 프로그램이 이미 개발되었으며 일부 기능 만 추가하려고합니다. – Novice

답변

1

필자의 이해로는 약간의 좌표 이해에 문제가 있습니다. 현실 세계에서 우리는 X 평면과 Y 평면이 4 사분면을 이루는 좌표 평면을 생각합니다.

컴퓨터에서는 첫 번째 사분면에서만 작동하며 뒤집힌 것은 원점 (0,0)이 왼쪽 상단임을 의미합니다. 당신은 당신이 realworld (1,1)을 배치 할 때 그 (25)의 모습에서 프로그램에 다른 중간막을 사용 머리

public int computerX(int realWorldX) 
{ 
    return realWorldX+(int)(ImageControl.Width/2); 
} 

public int computerY(int realWorldY) 
{ 
    int Convert = realWorldY+(int)(ImageControl.Height/2); 
    int Flip = ImageControl.Height - Convert; 
    return Flip; 
} 

에 그것을하지 않으려면

때문에, 변환 25라면 현실 세계를 원한다면 2,280을 곱하면 50,50을 쓸 수 있습니다.

public int computerX(int realWorldX) 
{ 
    return (realWorldX+(int)(ImageControl.Width/2))*yourXOffset; 
} 

public int computerY(int realWorldY) 
{ 
    int Convert = realWorldY+(int)(ImageControl.Height/2); 
    int Flip = ImageControl.Height - Convert; 
    return Flip*yourYOffset; 
} 
+0

실제 좌표는 뒤집힌 첫 번째 사분면에도 있습니다. 그래서 내 현실 세계 0,0이 왼쪽 위에 있습니다. 여기에있는 문제는 내가 생각하는 확장과 관련이있다. 실제 세계의 1,1은 화면상의 이미지의 1,1 픽셀과 일치하지 않습니다. – Novice

+0

그래서 (1,1)은 정확히 어디에 있습니까? 문제의 이미지가 위대 할 것입니다 –

+0

이미지를 비트 맵으로 만들고 그래픽을 사용할 수 있다면 –

관련 문제