Graphics.DrawString 方法

Graphics.DrawString 方法此 Graphics2D 类扩展 Graphics 类 以提供对几何形状 坐标转换 颜色管理和文本布局更为复杂的控制 它是用于在 Java tm 平台上呈现二维形状 文本和图像的基础类 一 在图片上绘制文字实例代码 packagecom test testImage importjava awt Color importjava awt Font importjava awt F

此 Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。

一、在图片上绘制文字

实例代码:

package com.test.testImage; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Graphics2DTest { public static void main(String[] args) { try { String text = "文字居中"; int width = 500; int height = 400; // 创建BufferedImage对象 BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); // 获取Graphics2D Graphics2D g2d = image.createGraphics(); // 画图 g2d.setBackground(new Color(255,255,255)); //g2d.setPaint(new Color(0,0,0)); g2d.setColor(Color.red); g2d.clearRect(0, 0, width, height); Font font=new Font("宋体",Font.PLAIN,64); g2d.setFont(font); // 抗锯齿 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 计算文字长度,计算居中的x点坐标 ,即字符串左边位置 FontMetrics fm = g2d.getFontMetrics(font); int textWidth = fm.stringWidth(text); int textHeight = fm.getHeight(); int widthX = (width - textWidth) / 2; // 表示这段文字在图片上的位置(x,y) .第一个是你设置的内容。 // y坐标位置为:指字体所在矩形的左上角y坐标+ascent(基线-升部线的距离) //原本字体基线位置对准画布的y坐标导致字体偏上ascent距离,加上ascent后下移刚好顶边吻合 // int y = (height-textHeight )/2+fm.getAscent(); g2d.drawString(text,widthX,100); //本内容根据实际情况,固定在具体高度位置 // 释放对象 g2d.dispose(); // 保存文件 ImageIO.write(image, "jpg", new File("D:/test.jpg")); } catch(Exception ex) { ex.printStackTrace(); } } } 

二、解决服务器部署图片文字乱码问题

在Windows系统上,文字显示正常,当项目部署到Linux系统上时,中文全部变成了口口口这种方框。我们使用的文字是Font font=new Font(“宋体”,Font.PLAIN,64);。出现的原因是因为在Linux上没有中文宋体或者没有中文其他文字的字体库,需要我们导入。 
(1)查找Windows系统(本地)的文字包

查找路劲C:\Windows\Fonts 
这里写图片描述

(2)将ttf文件导入到linux系统java的fonts包中。 
这里写图片描述
注:路径是你Linux系统java安装的文件,根据你的安装目录查询




(3)重启java或者tomcat生效

API :  

https://www.oschina.net/uploads/doc/javase-6-doc-api-zh_CN/java/awt/Graphics2D.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198757.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:32
下一篇 2026年3月26日 下午2:33


相关推荐

  • CE修改器使用教程 [入门篇]

    CE修改器使用教程 [入门篇]CheatEngine 一般简称为 CE 它是一款开放源代码的作弊软件 其主要功能包括 内存扫描 十六进制编辑器 动态调试功能于一体 且该工具自身附带了安全工具 可以用它很方便的生成自己的脚本 CE 可以说是目前最优秀的游戏修改器不是之一 这款修改工具绝对值得你去学习 只需要花一点点时间就够了

    2026年3月19日
    2
  • Xray的快速使用

    Xray的快速使用快速使用使用基础爬虫爬取并扫描整个网站xraywebscan–basic-crawlerhttp://example.com–html-outputcrawler.html使用HTTP代理进行被动扫描xraywebscan–listen127.0.0.1:7777–html-outputproxy.html设置浏览器http代理为http://127.0.0.1:7777,就可以自动分析代理流量并扫描。如需扫描https流量,请阅读下方文档抓取htt

    2022年5月30日
    70
  • Agent 到底是什么?和 ChatGPT 有什么不同?

    Agent 到底是什么?和 ChatGPT 有什么不同?

    2026年3月14日
    3
  • server .mappath[通俗易懂]

    server .mappath[通俗易懂]1.Server.MapPath(“/”) 应用程序根目录所在的位置如C:/Inetpub/wwwroot/2.Server.MapPath(“./”) 表示所在页面的当前目录   注:等价于Server.MapPath(“”) 返回Server.MapPath(“”)所在页面的物理文件路径3.Server.MapPath(“../”)表示上一级目录4.Serve

    2022年7月12日
    29
  • 彻底理解position与anchorPoint

    彻底理解position与anchorPoint原文  http://www.cnblogs.com/benbenzhu/p/3615516.html引言相信初接触到CALayer的人都会遇到以下几个问题:  为什么修改anchorPoint会移动layer的位置? CALayer的position点是哪一点呢? anchorPoint与position有什么关系?我也迷惑过,找过网上的教程,

    2022年10月8日
    5
  • 豆包智能体创建中如何优化模型推理性能?

    豆包智能体创建中如何优化模型推理性能?

    2026年3月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号