java图片处理,文字自动换行

本文介绍了一种使用Java的BufferedImage和Graphics2D类实现文本自动换行和居中显示的方法。该方法通过计算文本宽度来确保长文本能够适配指定的最大宽度,并在超出宽度时自动换行,同时支持文本内容的居中对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值