java - 在 Graphics2D 元素上将文本居中时遇到问题

标签 java graphics2d

您好,我正在构建 2048 游戏的复制品,该游戏可以运行,但我无法将我的数字保持在图 block 中间。基本上,对于 32 以下的数字,一切都是有序的,但数字越大,它们向左下角移动的就越多。

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

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();
}

}

最佳答案

textHeight() 方法返回字符串边界的宽度,textWidth() 方法返回字符串边界的高度。这不是走错路了吗?

关于java - 在 Graphics2D 元素上将文本居中时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37281067/

相关文章:

java - 使用drawString()时如何将字体大小减小到0.0001f?

java - Grahpics2D Draw 和 JPanel 重绘的并发问题

java - 自定义插件无法通过 QuerySpec 构造函数推断

java - 加载模式映射中的旧版 Spring 框架模式

java - 嵌入式 jetty 与其父应用程序之间的通信

java - JTable 列不会显示

Java AWT/Swing : paintComponent issue with custom JPanel(s)

java - 使用 Graphics2D 实现 "punch out"文本

java - 将 Graphics2D 转换为图像或 BufferedImage

java - 使用Java的File生成特定大小的文件