我在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);
答案 0 :(得分:1)
您不会将文字绘制到g
(最后一行),因此传递给KEY_TEXT_ANTIALIASING
的任何值都不会产生任何影响。
您正在使用已经抗锯齿的文本绘制旋转图像。尝试将KEY_INTERPOLATION
设置为VALUE_INTERPOLATION_BICUBIC
或VALUE_INTERPOLATION_BILINEAR
,这会影响图像的缩放和旋转。
您可以尝试的另一件事是将文本(旋转)直接绘制到g
,而不使用临时图像。也应该有效,但你可能需要调整相对于旋转的定位。