如何在 java2D 中获取 Font X 偏移宽度?

发布于 2024-10-14 02:35:36 字数 1112 浏览 3 评论 0原文

打印两个单词:“A”和“B

我需要使用 java 2D字体大小 = 100

; “A”字体系列:Bodoni MT Poster 压缩

B”字体系列:Arial

我编写了下面的代码来做到这一点:

BufferedImage image = new BufferedImage(400, 300, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
{//fill bg color
    g.setColor(new Color(255,255,255));
    g.fillRect(0, 0, image.getWidth(), image.getHeight());
}           

int FONT_SIZE=100;//set font size
{//print A
    g.setColor(new Color(0,0,0));
    g.setFont(new Font("Bodoni MT Poster Compressed", Font.PLAIN ,FONT_SIZE));      
    g.drawString("A",0,FONT_SIZE);
}
{//print B
    g.setColor(new Color(0,0,0));
    g.setFont(new Font("Arial", Font.PLAIN ,FONT_SIZE));        
    g.drawString("B",FONT_SIZE,FONT_SIZE);
}
g.dispose();

我得到结果图像:在此处输入图像描述

但我需要这样的(由 PhotoShop 制作):在此处输入图像描述

我认为问题在 g.drawString("B",FONT_SIZE,FONT_SIZE);

如何获取字体 X 偏移宽度?

感谢您的帮助:)

I need print two words: "A" and "B" using java 2D

font size = 100;

"A" font family: Bodoni MT Poster Compressed

"B" font family: Arial

I writed below codes to do it:

BufferedImage image = new BufferedImage(400, 300, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
{//fill bg color
    g.setColor(new Color(255,255,255));
    g.fillRect(0, 0, image.getWidth(), image.getHeight());
}           

int FONT_SIZE=100;//set font size
{//print A
    g.setColor(new Color(0,0,0));
    g.setFont(new Font("Bodoni MT Poster Compressed", Font.PLAIN ,FONT_SIZE));      
    g.drawString("A",0,FONT_SIZE);
}
{//print B
    g.setColor(new Color(0,0,0));
    g.setFont(new Font("Arial", Font.PLAIN ,FONT_SIZE));        
    g.drawString("B",FONT_SIZE,FONT_SIZE);
}
g.dispose();

I get the result image: enter image description here

but I need like this (make by PhotoShop):enter image description here

I think the question at g.drawString("B",FONT_SIZE,FONT_SIZE);

How can I get the font X offset width?

thanks for help :)

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

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

发布评论

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

评论(1

萌面超妹 2024-10-21 02:35:36

执行 setFont 后,声明一个变量,例如

FontMetrics fm = g.getFontMetrics();
int strA = fm.stringWidth("A"),
    strB = fm.stringWidth("B"),
    strH = fm.getHeight();

现在您已经有了字母的所有尺寸,设置它们的位置(px 是从左边缘到字母的距离,py 从顶部到字体基线的距离)

int px = ..., py = ...
g.drawString ("A", px, py);

,类似地“B”。希望有帮助,- MS

After you do the setFont, declare a variable like

FontMetrics fm = g.getFontMetrics();
int strA = fm.stringWidth("A"),
    strB = fm.stringWidth("B"),
    strH = fm.getHeight();

Now that you have all the dimensions of the letters, set their positions (px is distance from the left edge to the letter, py from the top to the baseline of the font)

int px = ..., py = ...
g.drawString ("A", px, py);

And similarly for "B". Hope that helps, - M.S.

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