我对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);
发布于 2014-02-11 04:07:56
您不会将文本绘制到g
(最后一行),因此传递给KEY_TEXT_ANTIALIASING
的任何值都不会产生任何效果。
您正在使用已反别名的文本绘制旋转图像。尝试将KEY_INTERPOLATION
设置为VALUE_INTERPOLATION_BICUBIC
或VALUE_INTERPOLATION_BILINEAR
,这将影响图像的缩放和旋转。
您可以尝试的另一件事是直接将文本(旋转)绘制到g
上,而不使用临时图像。应该也可以工作,但您可能需要调整相对于旋转的位置。
https://stackoverflow.com/questions/21700334
复制