Java Graphics2D如何實現文本的中心對齊?

Java graphics2d文本居中對齊詳解及代碼示例

Java Graphics2D如何實現文本的中心對齊?

在Java的Graphics2D中繪制文本時,默認情況下文本的起始點是其左上角。這在處理不同長度的文本時,常常導致對齊問題。為了實現文本的中心對齊,我們需要計算文本的寬度和高度,然后調整繪制坐標,使文本的中心點位于目標位置。

使用Font.getStringBounds()方法可以獲取文本的邊界矩形,從而得到文本的寬度和高度。利用這些信息,我們可以將繪制坐標偏移到文本的中心位置,即(文本寬度/2, 文本高度/2)。

以下是一個完整的Java代碼示例,演示了如何使用Graphics2D實現文本的中心對齊:

立即學習Java免費學習筆記(深入)”;

import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage;  public class CenteredText {      public static void main(String[] args) {         // 創建一個BufferedImage對象         BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);         Graphics2D g2d = image.createGraphics();          // 設置抗鋸齒         g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);          // 設置字體         Font font = new Font("Arial", Font.PLAIN, 36); // 可自定義字體和大小         g2d.setFont(font);          // 定義要繪制的文本         String text = "中心對齊文本";          // 獲取FontRenderContext對象         FontRenderContext frc = g2d.getFontRenderContext();          // 計算文本的邊界矩形         Rectangle2D bounds = font.getStringBounds(text, frc);         double textWidth = bounds.getWidth();         double textHeight = bounds.getHeight();          // 計算文本的中心點坐標         double centerX = 250; // 圖片寬度的一半         double centerY = 250; // 圖片高度的一半          // 計算繪制坐標,使文本中心點位于centerX, centerY         double x = centerX - textWidth / 2;         double y = centerY + textHeight / 2; // 注意y坐標的計算方式           // 繪制文本         g2d.drawString(text, (int) x, (int) y);          // 繪制一個矩形,以便更清晰地看到文本的位置         g2d.setColor(Color.RED);         g2d.drawRect((int)x, (int)(y - textHeight), (int)textWidth, (int)textHeight);          // 釋放Graphics2D對象         g2d.dispose();          //  (此處可以添加保存圖片的代碼,例如ImageIO.write(image, "png", new File("centered_text.png"));)     } }

這段代碼首先創建了一個BufferedImage,然后設置字體和抗鋸齒。關鍵部分是使用font.getStringBounds()計算文本的邊界矩形,并根據文本的寬度和高度計算出繪制坐標,使文本在圖像的中心對齊。 最后,代碼繪制文本并繪制一個紅色的矩形,方便觀察文本的邊界。 記得根據需要調整字體大小和圖片尺寸。 最后,你需要添加代碼將生成的圖片保存到文件。

這個改進后的例子更加清晰地展示了如何計算文本的中心點并進行繪制,避免了之前版本中可能存在的坐標計算錯誤。 并且添加了繪制矩形來更直觀地顯示文本位置。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享