无法在Graphics2D元素上居中文本

时间:2016-05-17 15:54:16

标签: java graphics2d

嗨我正在构建游戏复制品2048游戏可以正常工作,但我无法将数字保存在瓷砖中间。基本上一切都是为了数字小于32但数量越多,他们就越向左下方移动。

首先是我使用的输入而不是类。而g是代表图块的Graphics2D元素。

int getX= WIDTH/2- Text.textWidth(""+value, font, g)/2;
int getY= HEIGHT/2+ Text.textHeight(""+value, font, g)/2;
g.drawString(""+value, getX, getY);

public class Text {
private Text(){
}

public static int textHeight(String out, Font font, Graphics2D g){
    g.setFont(font);
    Rectangle2D bounds=g.getFontMetrics().getStringBounds(out, g);
    return (int)bounds.getWidth();
}
public static int textWidth(String out,Font font, Graphics2D g){
    g.setFont(font);
    if(out.length()==0)
        return 0;
    TextLayout tl=new TextLayout(out,font,g.getFontRenderContext());
    return (int)tl.getBounds().getHeight();
}

}

1 个答案:

答案 0 :(得分:1)

textHeight()方法返回字符串边界的 width ,textWidth()方法返回字符串边界的 height 。这不是错误的方式吗?