gpt4 book ai didi

java - 为什么我的水印在java中没有显示在中心?

转载 作者:太空宇宙 更新时间:2023-11-04 14:30:51 25 4
gpt4 key购买 nike

我学习了很多教程,终于得到了我的带有 Logo 和文本的水印图像,但问题是我的文本没有显示在图像上水平居中,而是文本从中心本身开始。

这是我的代码

BufferedImage waterMark = ImageIO.read(getClass().getResource("/haams/MyLogo.png"));
BufferedImage image = ImageIO.read(new File(MyImage.getAbsolutePath()));
Graphics2D g = image.createGraphics();
try
{
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));// 50% transp
g.drawImage(waterMark, image.getWidth() - waterMark.getWidth(), image.getHeight() - waterMark.getHeight(), null);// draw in lower right corner

FontMetrics fontMetrics = g.getFontMetrics();
Rectangle2D rect = fontMetrics.getStringBounds("Testing WaterMark", g);

g.setFont(new Font("Arial", Font.BOLD, 30));
g.drawString("Testing WaterMark",(image.getWidth() - (int) rect.getWidth()) / 2, (image.getHeight() - (int) rect.getHeight()) / 2);
//Above line should place my String in center but the text starts from center
}
finally
{
g.dispose();
}
ImageIO.write(image, FileName.substring(FileName.lastIndexOf('.')+1), new File(System.getProperty("user.dir")+"\\"+FileName));

在我的输出中,MyLogo 正确放置在我想要的位置,但 Text 从中心开始,而不是位于中心。

我没有 10 分来上传图片,所以我会尽力说明我的意思

我的图像和其中的文字

 -----------------------------------
| |
| |
| |
| |
| |
| Test WaterMark |
| |
| |
| |
| |
| |
-----------------------------------

您可以看到文本从中心开始,而不是位于中心。我的代码有什么问题?

最佳答案

在我看来,问题可能在于你这样做

FontMetrics fontMetrics = g.getFontMetrics();

在设置要使用的字体之前

g.setFont(new Font("Arial", Font.BOLD, 30));

确保先设置字体,然后在设置字体后获取指标。

关于java - 为什么我的水印在java中没有显示在中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26169727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com