2011-08-15 2 views
5

화면에 그려지는 텍스트의 너비를 찾아야합니다. This thread은 FontMetrics.stringWidth()가 FontMetrics.getStringBounds()만큼 정확하지 않을 수도 있음을 제안합니다.FontMetrics.stringWidth()와 FontMetrics.getStringBounds()의 차이점은 무엇입니까?

이것이 맞는지 누구나 아는 사람이 있습니까? 그렇다면이 차이점은 어떤 상황에서 볼 수 있습니까? FontMetrics.stringWidth()는 SwingUtilities.computeStringWidth()를 비롯하여 더 자주 사용되는 것으로 보입니다. 또한 명백한 이점은 Graphics 객체가 필요 없다는 점입니다. 그러나이 자체는 앤티 앨리어싱 및 유사한 설정이 Graphics 객체에 정의되어 있다는 사실과 결합하여 FontMetrics.getStringBounds()가 더 정확한 이유를 설명 할 수 있습니다.

+2

참고 사항 [Q ​​& A] (http://stackoverflow.com/questions/5979795/how-to-calculate-the-number-ofrows-and-columns-in-eachrowser- text-takes-in-aj/5998117 # 5998117). – trashgod

답변

5

getStringBounds는 작업에 더 많은 정보가 있습니다. 서브 픽셀의 Glyph 배치를 계산해, Glyph 크기에 대한 에일 리어 징 제거의 효과를 고려하기 위해서 이것을 사용할 수 있습니다. FontRenderContext에 대한 문서에서 : 응용 프로그램에 의해 지정

안티 앨리어싱 및 부분 메트릭스가, 픽셀 경계의 둥근 문자의 크기에 영향을 줄 수 있습니다.

4

나는 대답이 당신의 질문에 있다고 생각합니다. JavaDoc을 올린 사람 :이 메서드에서 반환 유효폭의 합계가 계정에 렌더링 컨텍스트를 고려하지 않는

stringWidth

참고. 따라서 앤티 앨리어싱 및 부분 메트릭 힌트는 사전 값에 영향을 줄 수 있습니다. 앤티 앨리어싱 및 부분 메트릭 힌트를 활성화 할 때이 메서드 대신 getStringBounds (String, Graphics)를 사용하십시오. String의 진보는 문자의 진보의 합계 일 필요는 없습니다. 그것은 그래픽을 전달됩니다 이후