Каков правильный синтаксис для изменения шрифтов и рисования строк в Java? - PullRequest
0 голосов
/ 30 марта 2011

Может кто-нибудь проверить мой синтаксис здесь? Я передаю «Times New Roman», «Arial», «Verdana» на fontName и использую 8,12,15 и т. Д. Для fontSize. Здесь никогда не меняется шрифт. Я делаю это, чтобы написать текст поверх изображения.

Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics();
g2d.drawImage(photo, 0, 0, null);
g2d.setColor(Color.white);
Font font = new Font(fontName, Font.PLAIN, fontSize);
g2d.setFont(font);
g2d.drawString(text,x,y);

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

Наконец, я обнаружил, что в системе не было ни одного шрифта из моего списка, поэтому мне пришлось использовать метод getAllFonts () и передавать только те шрифты из списка.

0 голосов
/ 30 марта 2011

Вы должны делать это

BufferedImage img = new BufferedImage(
    w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
g2d.drawImage(photo, 0, 0, null);
g2d.setPaint(Color.red);
//example :     g2d.setFont(new Font("Serif", Font.BOLD, 15));
g2d.setFont(new Font(fontName, Font.BOLD, size));
String s = "Hello, world!";
// assuming x & y is set using graphic's font metrics
g2d.drawString(s, x, y);
g2d.dispose();

Выдержка из документации на солнце

GetGraphics

public Graphics getGraphics () Это метод возвращает Graphics2D, но здесь для обратной совместимости. создавать графику удобнее, так как он объявлен, чтобы вернуть Graphics2D.

Это на самом деле не означает, что вы не должны использовать getGraphics API. Просто этот код работал для меня:)

...