Java текстовое изображение для записи с определенными шрифтами - PullRequest
1 голос
/ 04 мая 2011

Я пишу текст поверх существующего изображения, и шрифт не очень четкий. Есть ли какие-либо настройки в классах Graphics2D или Font, которые помогают сделать шрифты более привлекательными при написании текста поверх изображений? Шрифт Dante не выходит как Dante, когда я пишу его. Я пытался использовать сглаживание, но это не имело никакого эффекта (см. SetRenderingHint). Изображения получались одинаковыми с или без набора RenderingHint. Какие-либо предложения?

public class ImageCreator{

public void createImage(String text){
     Graphics2D g = img.createGraphics(); //img is a BufferedImage read in from file system
     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
     Font fnt=new Font("Dante",1,20);
     Color fntC = new Color(4, 4, 109);       
     g.setColor(fntC);
     g.setFont(fnt);
     Dimension d = new Dimension(200, 113);
     drawCenteredString(text, d.width, d.height, g);
}
public static void drawCenteredString(String s, int w, int h, Graphics g) {
      FontMetrics fm = g.getFontMetrics();
      int x = (w - fm.stringWidth(s)) / 2;
      int y = (fm.getAscent() + (h - (fm.getAscent() + fm.getDescent())) / 2);
      g.drawString(s, x, y);
}

}  

1 Ответ

2 голосов
/ 04 мая 2011

Используйте TextLayout, как показано здесь .

Добавление: преимущество TextLayout состоит в том, что RenderingHints может применяться к FontRenderContext.

...