Java 使用“绘制位置”与“平移变换”时,图形2D文本在不同位置绘制

Java 使用“绘制位置”与“平移变换”时,图形2D文本在不同位置绘制,java,graphics2d,Java,Graphics2d,如果我这样做: g.drawString("9", (float) 10, (float) 50); g.translate(10, 0); g.drawString("9", (float) 0, (float) 50); g.translate(9.5, 0); g.drawString("9", (float) 0.5, 50); 文本“9”将在像素x位置10处绘制 同样,如果我这样做: g.drawString("9", (float) 10, (float) 50); g.tr

如果我这样做:

g.drawString("9", (float) 10, (float) 50);
g.translate(10, 0);
g.drawString("9", (float) 0, (float) 50);
g.translate(9.5, 0);
g.drawString("9", (float) 0.5, 50);
文本“9”将在像素x位置10处绘制

同样,如果我这样做:

g.drawString("9", (float) 10, (float) 50);
g.translate(10, 0);
g.drawString("9", (float) 0, (float) 50);
g.translate(9.5, 0);
g.drawString("9", (float) 0.5, 50);
文本将再次在x位置10处绘制

但是,如果我这样做:

g.drawString("9", (float) 10, (float) 50);
g.translate(10, 0);
g.drawString("9", (float) 0, (float) 50);
g.translate(9.5, 0);
g.drawString("9", (float) 0.5, 50);
文本将向右显示1个像素,大概在x位置11处

下面是它的外观(放大4倍),带有一条垂直参考线


我假设这是图形渲染器中发生的某种舍入错误。有没有办法确保第三个“9”绘图与前两个绘图在相同的x位置?

您可以将坐标四舍五入并传递给Graphics2D纯整数。

看起来这可能是IBM java运行时Graphics2D实现中的一个错误(与Sun JRE相反)。。。