2014-02-11 2 views
0

Java에서 문자열 앤티 앨리어싱에 문제가 있습니다. 이 코드를 사용하는 경우 일반 (회전하지 않은 문자열)에이 코드를 사용하면이미지 회전시 문자열 안티 앨리어싱이 작동하지 않습니다.

g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

모두 괜찮습니다. 하지만 회전 된 이미지에서 앤티 엘리 어싱을 사용하려고하면 문자열을 그립니다.이 문자열 렌더링은 앤티 엘리 어싱 기능없이 렌더링됩니다.

이 앤티 엘리 어싱이 작동하지 않는 내 코드의 예입니다

Graphics2D g = originalImage.createGraphics(); 

AffineTransform affineTransform2 = new AffineTransform(); 
affineTransform2.setToIdentity(); 
affineTransform2.translate(125, 325); 
affineTransform2.rotate(Math.toRadians(345)); 

BufferedImage positionImage = new BufferedImage(100, 40, BufferedImage.TYPE_INT_ARGB); 
Graphics2D positionImageG2D = positionImage.createGraphics(); 
positionImageG2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
positionImageG2D.setFont(getFont(30f)); 
positionImageG2D.drawString("Some Text",100, 40); 
positionImageG2D.dispose(); 

g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
g.drawImage(positionImage, affineTransform2, null); 

답변

1

을 당신은 g (마지막 줄)에 텍스트를 그릴하지 않는, 그래서 당신이 KEY_TEXT_ANTIALIASING에 전달 어떤 값 중 하나를 필요가 없습니다 효과.

이미 앤티 앨리아싱 된 텍스트로 회전 된 이미지를 그립니다. KEY_INTERPOLATIONVALUE_INTERPOLATION_BICUBIC 또는 VALUE_INTERPOLATION_BILINEAR으로 설정하여 이미지의 크기 조정 및 회전에 영향을 주어야합니다.

시도해 볼 수있는 또 다른 방법은 임시 이미지없이 g에 텍스트 (회전)를 직접 그려 넣는 것입니다. 또한 작동해야하지만 회전을 기준으로 위치를 조정해야 할 수도 있습니다.

+0

고마워요! 나에게 가치 변형을 가진'KEY_INTERPOLATION'을 도와주세요! –

+0

좋습니다! 나중에 참조 할 수 있도록 대답을 편집하겠습니다. :-) – haraldK

관련 문제