如何基于Java的文字大小设置图形宽度

我正在尝试创建一个BufferedImage并从中创建一个Graphics2D对象。使用drawString在水平方向上最多绘制6个字符的字符串,并且其填充的大小是第一个字符串之前和所有字符串(包括最后一个字符串)之后最长文本的一半。

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.util.Arrays;
import java.util.Map;

public class MyClass{


    final int fontSize;
    private int fontHeight;
    final int width;
    final int height;
    private int padding;
    private int totalPadding;
    private final Font font;
    final Map<?,?> desktopHints;
    private String[] names;

    public MyClass(String[] truncatedNames){
        this.desktopHints = 
                (Map<?,?>) Toolkit.getDefaultToolkit().getDesktopProperty("awt.font.desktophints");
        this.fontSize = 12;
        this.font = new Font("Serif",Font.PLAIN,fontSize);
        this.width = measureWidth();
        this.height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        this.names = Arrays.copyOf(truncatedNames,truncatedNames.length);

    }

    private int measureWidth(){
        int totalFontSize = 0;

        //what to put here?

        //update values of padding and totalPadding after calculation.
        //this.padding =
        //this.fontHeight =
        this.totalPadding = this.padding * this.names.length;
        return totalFontSize + totalPadding;
    }

    public void drawmyobj(){
        BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = bufferedImage.createGraphics();

        if (this.desktopHints != null) {
            g2d.setRenderingHints(this.desktopHints);
        }


        int nameStartX = this.padding;
        int nameHeight = this.fontHeight;

       g2d.setfont(this.font);

       g2d.setColor(Color.white);
       g2d.fillRect(0,this.width,this.height);

       g2d.setColor(Color.black);

       for(int i = 0; i < this.names.length; i++){
            int changeX = this.padding * i;
            g2d.drawString(names[i],nameStartX + changeX,nameHeight);
        }

    }


}
zilan112 回答:如何基于Java的文字大小设置图形宽度

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2846271.html

大家都在问