Java中字体的高度如何取得

 我来答
李磊_1
2018-08-09 · TA获得超过299个赞
知道小有建树答主
回答量:337
采纳率:66%
帮助的人:120万
展开全部

可以使用:java.awt.Font类的getStringBounds函数,参考代码如下(57行):

package test;

import javax.imageio.ImageIO;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Program {

public static void main(String[] args) { 
try {
getImage(Font.BOLD);
System.out.println("finished.");
} catch (IOException e) { 
e.printStackTrace();
}
}

public static void getImage(int fontStyle) 
throws FileNotFoundException, IOException {
        // 得到图片缓冲区
        int width = 100;
        int height = 50;
        int imageType = BufferedImage.TYPE_INT_BGR;
        BufferedImage targetImage = new BufferedImage(width, height, imageType);
 
        // 得到画笔
        Graphics graphics = targetImage.getGraphics();
 
        // 设置背景色为白色
        graphics.setColor(Color.WHITE);
 
        // 画出一个矩形
        // 坐标x 坐标y 宽度100 长度50
        graphics.fillRect(0, 0, width, height);
 
        // 微软雅黑 粗体显示 大小25
        Font font = new Font("微软雅黑", fontStyle, 25);
        graphics.setFont(font);
 
        // 设置字的颜色 和 背景的颜色 要不同的
        graphics.setColor(Color.RED);
        
        int x = 20, y = 25;
 
        // 写字
        graphics.drawString("中文", 20, 35);
        
        // 获取到文字区域大小
        Rectangle2D rect = font.getStringBounds("中文", ((Graphics2D)graphics).getFontRenderContext());
        
        // 绘制方框将文字圈起来
        graphics.drawRect(x, (int)(y - (rect.getHeight() / 2)), (int)rect.getWidth(), (int)rect.getHeight());
 
        ImageIO.write(targetImage, "JPEG", new FileOutputStream("E:\\" + fontStyle + ".jpg"));
 
    }
}

圈起来的文字如下:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式