java圖片處理,文字自動換行
阿新 • • 發佈:2021-01-28
BufferedImage - Graphics2D 圖片處理 文字居中換行util
/***
*
* @param g Graphics2D
* @param font Font
* @param text 文字內容
* @param x 起始點X軸座標
* @param y 起始點Y軸座標
* @param maxWidth 文字最大長度
*/
public static void content(Graphics2D g , Font font , String text , int x , int y , int maxWidth) {
FontMetrics fontMetrics = g.getFontMetrics(font);
int textWidth = fontMetrics.stringWidth(text);
int X = (maxWidth - textWidth) / 2;
g.drawString(text,x+X,y);
}
BufferedImage - Graphics2D 圖片處理 文字自動換行util
/***
*
* @param g Graphics2D
* @param font Font
* @param text 文字內容
* @param x 起始點X軸座標
* @param y 起始點Y軸座標
* @param maxWidth 文字最大長度
*/
public static void drawString(Graphics2D g , Font font , String text , int x , int y , int maxWidth) {
JLabel label = new JLabel(text);
label.setFont(font);
FontMetrics metrics = label.getFontMetrics(label.getFont());
int textH = metrics.getHeight();
int textW = metrics.stringWidth (label.getText()); //字串的寬
String tempText = text;
while(textW > maxWidth) {
int n = textW / maxWidth;
int subPos = tempText.length() / n;
String drawText = tempText.substring(0 , subPos);
int subTxtW = metrics.stringWidth(drawText);
while(subTxtW > maxWidth) {
subPos--;
drawText = tempText.substring(0 , subPos);
subTxtW = metrics.stringWidth(drawText);
}
g.drawString(drawText , x , y);
y += textH;
textW = textW - subTxtW;
tempText = tempText.substring(subPos);
}
g.drawString(tempText , x , y);
}