2009-04-01 4 views
3

Java에서 모양을 "실제 크기"로 렌더링하는 가장 쉬운 방법은 무엇입니까? 예를 들어, 직경이 1 인치 인 튜브가 있는데 이것을 1 인치 원의 윤곽선으로 화면에 나타내고 싶습니다. Graphics2D 메서드 drawOval (int x, int y, int width, int height) 높이와 너비를 픽셀 단위로 지정합니다. 픽셀 크기를 화면에 렌더링 된 크기로 변환하는 단계는 무엇입니까?"실제 크기"의 모양

미리 감사드립니다.

답변

5

클래스 GraphicsConfiguration의 getNormalizingTransform() 메소드는이처럼 보이는 몇 가지 잠재적 인

http://java.sun.com/javase/6/docs/api/java/awt/GraphicsConfiguration.html#getNormalizingTransform()

+0

나는 단지 몇 초 뒤에 같은 일을 게시했다 ... +1 –

+0

+1 그건 꽤 쉽게. Toolkit.getDefaultToolkit(). getScreenResolution()에 대해 화면의 DPI를 제공하는 내용을 게시하려고했으나 이후에도 수학이 필요합니다. –

+0

나는 그 라인을 따라 생각하고 있었고, 그럼에도 이것에 부딪쳤다. 자바는 그 순간을 가지고있다. – Oli

0

문제는 픽셀 크기가 항상 같지 않다는 것입니다. 예를 들어, 100 x 100 픽셀 사각형은 17 "1280 x 1024 모니터와 19"1280 x 1024 모니터에서 서로 다른 크기가 될 것입니다.

디스플레이의 물리적 크기를 알려주는 API가 있다고 생각하지 않습니다.

사람들에게 모니터의 크기를 묻는 것은 많은 사람들이 모르는만큼 유용하지 않을 수 있습니다.

화면에 여러 줄을 표시하고 사용자가 1 인치에 가장 가까운 것을 클릭하고 모든 렌더링의 크기를 조정할 수 있지만 약간 어색합니다.

-1

이 호기심 질문, 내가 생각하지 않은 것입니다. 머리 꼭대기에서 화면 크기 (17 ", 21"등), 화면 해상도 ("800x600, 1280x1024 등) 및 화면의 DPI (72, 96, 120 등)

다양한 api를 통해 화면 해상도를 결정할 수 있으며 일 수도 있고 dpi ...하지만 화면 크기에 대해서는 행운이 있습니다. 모든 경우에도 여전히 보장 할 수는 없습니다.

0

음, 모니터의 크기와 해상도가 필요합니다. 모니터의 가로 세로 비율이 1280 : 1024 인 17 인치라고 가정 해 봅니다.

화면 크기는 빗변이므로 빗변의 픽셀 수를 찾아야합니다. 나중에 간단한 지오메트리를 사용하여 픽셀/인치 계산을 얻을 수 있습니다.

1280px^2 + 1024px^2 = c^2, c = 1639.2px. 따라서 1280x1024 해상도의 17 인치 모니터의 경우 1639.2px/17inch = 96.4px/inch입니다. 이것은 사용자가 입력해야합니다.

1

화면 크기와 해상도에 대해 알 수있을지라도 표시된 그림의 실제 크기를 확신 할 수 없다는 점에 유의하십시오. 사용자가 CRT 화면이있는 경우 실제 화면 크기보다 약간 작은 화면이됩니다.

정확한 결과가 정말로 필요한 경우 사용자가 화면에 표시된 눈금자를 대화 형으로 조정하고 실제 눈금자와 비교할 수있는 유일한 방법입니다.

2

java.awt.Toolkit은 및 pixel dimensions of the screen.을 알려줄 것입니다. 이는 기본 시스템의 정보를 기반으로하지만 때로는 잘못 구성되었을 수 있습니다.

그래서 1 "원을 그리려면 직경이 1.0 * tk.getScreenResolution()이고, 2.5 인치 원이 2.5 * tk.getScreenResolution() 등입니다.

+0

정확한 방법을 설명하는 흥미로운 기사를 찾았습니다. http://www.developer.com/java/other/print.php/626071 – javacavaj

+0

기사에 따르면이 방법은 정확함을 보장하지 않습니다. – DJClayworth

+0

기사가 오래되었음을 유의하십시오 - JDK 1.2.2 –

1

이론적으로 이렇게 할 수 있습니다. java.awt.Toolkit은 픽셀의 크기와 화면의 픽셀 크기를 알려줍니다. 따라서 1 "원을 그리려면 직경 1.0 * tk.getScreenResolution(), 2.5"원은 2.5 * tk.getScreenResolution() 등을 사용합니다. 또는 GraphicsConfiguration.getNormalizingTransform() 메서드를 사용할 수 있습니다 해상도를 '고정'크기로 조정합니다.

불행히도 이러한 두 가지 방법은 화면의 실제 해상도를 아는 기본 시스템에 의존합니다. 실제로 이것은 매우 드물게 발생합니다. 모든 종류의 것들이 픽셀의 실제 크기에 영향을 줄 수 있습니다. 모니터의 실제 크기와 구성은 하나이며 일부 모니터는 화면의 이미지 크기를 조정할 수도 있습니다.

이 문서 http://www.developer.com/java/other/print.php/626071에서 이에 대해 설명합니다.

프린터는 일반적으로 실제 해상도를 알려주는 것이 일반적입니다. 절대적으로 올바른 크기의 그림이 있어야한다면 거기에 보내십시오.

나는 이것을 종합 한 다양한 대답에 대해 감사의 말을 전한다.

0

단순히 Toolkit에서 화면 해상도를 얻는 것만으로는 부족하다는 인상을 받았습니다. 난 당신이 1 "사각

int width = 1.0 * scalingFactor; 

및 2.5"사각

int width = 2.5 * scalingFactor; 

이 모든 Java2D에이 가정한다는 것을 만들기

float scalingFactor = Toolkit.getDefaultToolkit().getScreenResolution()/72f; 

의 라인을 따라 더 많은 일을 할 필요가 있다고 생각 72 dpi 화면 해상도이며, 시스템을 다르게 설정하면이를 보정하기 위해 확장해야합니다.