繁体   English   中英

用Java在图像上绘制字符串

[英]Draw string to image in Java

我需要在Java中绘制一个字符串到BufferedImage。 这样做的方式并不重要,但是图像应仅占用其所需的空间,如以下示例所示。 我需要创建一个仅包含字符串的新BufferedImage。 字符串上方和字符串右侧的多余空间是可以容忍的,但是在绘制字符串的下方和左侧我都没有多余的空间。

图片

这样的事情可能吗? 我已经尝试过自己做,但是我总是最终会拥有多余的空间,这不是我想要的。 任何帮助,将不胜感激。

您可以使用Graphics2D#drawString方法:

import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class MainClass{
  public static void main(String[] args) {
    JFrame jf = new JFrame("Demo");
    Container cp = jf.getContentPane();
    MyCanvas tl = new MyCanvas();
    cp.add(tl);
    jf.setSize(300, 200);
    jf.setVisible(true);
  }
}

class MyCanvas extends JComponent {
  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    Font font = new Font("Serif", Font.PLAIN, 96);
    g2.setFont(font);

    g2.drawString("Test string", 40, 120); 
  }
}

我需要在Java中为图像绘制字符串。 我自己尝试过做,但是我总是最终有多余的空间

我不知道您是要创建String的图像还是在现有图像中添加一些文本。 因为您说您有多余的空间,所以我假设您正在尝试创建文本的图像,并且您不知道要制作多大的BufferedImage。

用所需的文本创建一个JLabel。 然后,您可以使用Screen Image类创建标签组件的图像。 图像将是文本的确切大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM