Java中字体的高度如何取得
1个回答
展开全部
可以使用: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"));
}
}
圈起来的文字如下:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询