我正在尝试创建一个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);
}
}
}