다음을 통해 공유


좌표계 형식

GDI +-세 가지 좌표 공간을 사용 하는 중: 전역, 페이지 및 디바이스입니다. 월드 좌표는 특정 그래픽 세계를 모델링하는 데 사용되는 좌표이며 .NET Framework의 메서드에 전달하는 좌표입니다. 페이지 좌표는 폼이나 컨트롤과 같은 그리기 화면에서 사용되는 좌표계를 나타냅니다. 디바이스 좌표는 화면 또는 인쇄 용지 등에 실제 디바이스가 그리는 데 사용된 좌표입니다. myGraphics.DrawLine(myPen, 0, 0, 160, 80) 호출을 할 때 DrawLine 메서드((0, 0)(160, 80))로 전달하는 점은 월드 좌표 공간에 있습니다. GDI+는 화면에 선을 그리려면 먼저 좌표가 변환 시퀀스를 통과해야 합니다. 월드 변환이라고 하는 한 변환은 월드 좌표를 페이지 좌표로 변환하고, 페이지 변환이라는 다른 변환은 페이지 좌표를 디바이스 좌표로 변환합니다.

변환 및 좌표계

왼쪽 위 모서리가 아닌 클라이언트 영역의 본문에 원점이 있는 좌표계로 작업하려고 한다고 가정하겠습니다. 예를 들어, 원점을 클라이언트 영역의 왼쪽 가장자리에서 100픽셀, 클라이언트 영역 위쪽에서 50픽셀로 지정하려고 합니다. 다음 그림에서 이러한 좌표계를 보여줍니다.

좌표계 그림.

myGraphics.DrawLine(myPen, 0, 0, 160, 80), 호출을 하면 다음 그림에 표시된 선을 얻습니다.

좌표계의 선 그림.

세 개의 좌표 공간에 있는 선의 엔드포인트 좌표는 다음과 같습니다.

좌표 공간 엔드포인트 좌표
World (0, 0)~(160, 80)
페이지 (100, 50)~(260, 130)
디바이스 (100, 50)~(260, 130)

페이지 좌표 공간의 원점은 클라이언트 영역의 왼쪽 위 모서리에 있습니다. 항상 이 경우가 될 것입니다. 또한 측정 단위가 픽셀이므로, 디바이스 좌표는 페이지 좌표와 동일합니다. 측정 단위를 픽셀이 아닌 다른 단위(예: 인치)으로 설정하면 디바이스 좌표가 페이지 좌표와 달라집니다.

월드 좌표를 페이지 좌표에 매핑하는 월드 변환은 Graphics 클래스의 Transform 속성에 보관됩니다. 앞의 예제에서 월드 변환은 x 방향에서 100단위, y 방향으로 50단위 좌표 이동합니다. 다음 예에서는 Graphics 개체의 월드 변환을 설정한 다음 그 Graphics 개체를 사용하여 선행 그림에 표시된 선을 그립니다.

myGraphics.TranslateTransform(100, 50);
myGraphics.DrawLine(myPen, 0, 0, 160, 80);
myGraphics.TranslateTransform(100, 50)
myGraphics.DrawLine(myPen, 0, 0, 160, 80)

페이지 변환은 페이지 좌표를 디바이스 좌표에 매핑합니다. Graphics 클래스는 페이지 변환을 조작하기 위해 PageUnitPageScale 속성을 제공합니다. 또한 Graphics 클래스는 디스플레이 디바이스의 가로 및 세로의 인치 당 도트 수(dpi)를 검사하기 위해 두 개의 읽기 전용 속성, DpiXDpiY를 제공합니다.

Graphics 클래스의 PageUnit 속성을 사용하여 픽셀이 아닌 다른 측정 단위를 지정할 수 있습니다.

참고

PageUnit 속성을 World로는 설정할 수 없습니다. 이것은 물리적 단위가 아니고, 예외를 발생시키기 때문입니다.

다음 예에서는 (0, 0)에서 (2, 1)까지 선을 그립니다. 여기서, 점(2, 1)은 점 (0, 0)에서 오른쪽으로 2인치, 아래로 1인치 위치입니다.

myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
myGraphics.PageUnit = GraphicsUnit.Inch
myGraphics.DrawLine(myPen, 0, 0, 2, 1)

참고

펜을 생성할 때 펜 너비를 지정하지 않으면 앞의 예제에서는 1인치 너비의 선을 그립니다. Pen 생성자에 대한 두 번째 인수에서 펜 너비를 지정할 수 있습니다.

Pen myPen = new Pen(Color.Black, 1 / myGraphics.DpiX);
Dim myPen As New Pen(Color.Black, 1 / myGraphics.DpiX)

디스플레이 디바이스가 가로 방향으로 96dpi, 세로 방향으로 96dpi라고 가정할 경우, 선행 예제에서 선의 엔드포인트는 세 개의 좌표 공간에 다음 좌표를 가집니다.

좌표 공간 엔드포인트 좌표
World (0, 0)~(2, 1)
페이지 (0, 0)~(2, 1)
디바이스 (0, 0)~(192, 96)

월드 좌표 공간의 원점은 클라이언트 영역의 왼쪽 위 모서리에 있으므로, 페이지 좌표는 월드 좌표와 동일합니다.

월드 변환과 페이지 변환을 결합하여 다양한 효과를 얻을 수 있습니다. 예를 들어, 측정 단위로 인치를 사용하고 좌표계의 원점이 클라이언트 영역의 왼쪽 가장자리에서 2인치, 클라이언트 영역 위쪽에서 1/2인 지점에 되려고 한다고 가정합니다. 다음 예제에서는 Graphics 개체의 월드 및 페이지 변환을 설정한 다음 (0, 0)에서 (2, 1)까지 선을 그립니다.

myGraphics.TranslateTransform(2, 0.5f);
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
myGraphics.TranslateTransform(2, 0.5F)
myGraphics.PageUnit = GraphicsUnit.Inch
myGraphics.DrawLine(myPen, 0, 0, 2, 1)

다음 그림에서는 선과 좌표계를 보여줍니다.

선 및 좌표계 그림.

디스플레이 디바이스가 가로 방향으로 96dpi, 세로 방향으로 96dpi라고 가정할 경우, 선행 예제에서 선의 엔드포인트는 세 개의 좌표 공간에 다음 좌표를 가집니다.

좌표 공간 엔드포인트 좌표
World (0, 0)~(2, 1)
페이지 (2, 0.5)~(4, 1.5)
디바이스 (192, 48)~(384, 144)

참고 항목