Я прошел через множество учебников и, наконец, получил изображение Водяные знаки с логотипом и текстом вместе, но проблема в том, что мой текст не отображается по горизонтали к изображению, но текст начинается с самого центра.Почему мой водяной знак не отображается в центре в java?
Вот мой код
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 |
| |
| |
| |
| |
| |
-----------------------------------
Вы можете увидеть, что текст начинается от центра, а не от центра. Что случилось в моем коде?
Что произойдет, если вы установите шрифт на графике, прежде чем вы получите границы строк? Я думаю, что вы делаете расчет для позиции с другим шрифтом –
@ToonBorgers то же самое :( –