在 Java 中更改字体和绘制字符串的正确语法是什么?

发布于 2024-10-28 08:43:26 字数 398 浏览 7 评论 0原文

有人可以在这里检查我的语法吗?我将“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);

Can someone check my syntax here? I am passing "Times New Roman","Arial","Verdana" to fontName and using 8,12,15 etc. for fontSize. It never changes the font here. I am doing this to write some text over an image.

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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

混吃等死 2024-11-04 08:43:26

我最终发现系统上没有我的列表中的字体,因此我必须使用 getAllFonts() 方法并仅传递列表中的那些字体。

I finally found out that none of fonts from my list were there on the system so I had to use getAllFonts() method and pass only those fonts from the list .

空名 2024-11-04 08:43:26

你应该这样做

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();

Sun 文档摘录

获取图形

公共图形 getGraphics() 这个
方法返回一个 Graphics2D,但是是
这里是为了向后兼容。
createGraphics 更方便,
因为它被声明返回一个
Graphics2D。

这并不真正意味着您不应该使用 getGraphics API。只是上面的代码对我有用:)

You should be doing this

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();

Excerpt from sun documentation

getGraphics

public Graphics getGraphics() This
method returns a Graphics2D, but is
here for backwards compatibility.
createGraphics is more convenient,
since it is declared to return a
Graphics2D.

This does not really mean that you should not use getGraphics API. Just that the above code worked for me :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文