Graphics.DrawString 方法

此 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 
这里写图片描述

本地是一个ttc文件,我们需要修改文件后缀,改为ttf。 
这里写图片描述

(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

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: graphics.drawstring是一个在图形界面中绘制字符串的方法。它可以在指定的位置绘制指定的字符串,并可以设置字体、颜色等属性。在编写图形界面程序时,使用graphics.drawstring可以方便地在界面上显示文本信息。 ### 回答2: graphics.drawstring是Java中用于绘制文本的方法之一。它可以在图形对象上绘制指定的字符串。 首先,需要创建一个Graphics对象,可以通过调用Component类中的getGraphics()方法获得。然后,使用该对象的drawString()方法来绘制文本。drawString()方法有多个重载形式,可以根据需要选择适合的方法drawString()方法的参数包括字符串内容、起始位置的x坐标和y坐标。通过调整这两个坐标的值,可以控制文本的绘制位置。另外,可以使用setFont()方法设置文本的字体、setSize()方法设置文本的大小、setColor()方法设置文本的颜色等,以实现更多的自定义效果。 绘制文本时需要特别注意的是,要确保所绘制的字符串在指定位置不会超出图形对象的范围,否则可能会出现截断或者超出显示范围的问题。可以通过使用字符串的长度来计算文本所需的绘制空间,从而优化绘制效果。 此外,drawString()方法还可以用于在图形上绘制多行文本。可以使用换行符("\n")将多行文本分隔,然后使用多次调用drawString()方法分别绘制每一行,从而实现多行文本的绘制效果。 总而言之,graphics.drawString()是Java中用于绘制文本的方法,可以通过调整参数来控制文本的位置、字体、大小和颜色等,实现多种自定义效果的文本绘制功能。 ### 回答3: graphics.drawstring是Java图形库中的一个方法,用于在图形上绘制字符串。 它的基本语法如下: graphics.drawString(String str, int x, int y) 其中,str是要绘制的字符串,x和y是字符串的起始坐标。起始坐标指的是字符串的左下角位置。 该方法可以用于在图形界面中添加文字标注、标题、注释等。可以通过设置不同的字体、字号和颜色来实现不同的效果。 例如,我们可以使用如下代码在图形上绘制一个简单的字符串: ```java import javax.swing.*; import java.awt.*; public class DrawStringExample extends JFrame { public DrawStringExample() { setSize(400, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); } public void paint(Graphics g) { super.paint(g); g.setFont(new Font("Arial", Font.BOLD, 20)); g.drawString("Hello, World!", 100, 100); } public static void main(String[] args) { DrawStringExample example = new DrawStringExample(); example.setVisible(true); } } ``` 在上述例子中,我们继承了JFrame类,并重写了其paint方法,在paint方法中调用了drawString方法来绘制字符串。使用setFont方法设置了字体、字号和样式,使用drawString方法绘制了字符串"Hello, World!",起始坐标为(100, 100)。 总结起来,graphics.drawstring是Java图形库中的一个方法,用于在图形上绘制字符串。通过设置不同的字体、字号和颜色,我们可以创建不同样式的文字标注、标题等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张大大大大旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值