我们目前正在使用下面的代码在XChart库中绘制文本,但是在ODROID C2上,例如文本被打乱并且不可读(见附图以供参考)。之前使用的代码是以layout.draw开头的行,但由于它在EPS和PDF导出中导致问题,因此被替换。我们有一个github问题here,它说明了问题的各种原因。它在其他几个安装上工作得很好。
FontRenderContext frc = g.getFontRenderContext();
// TextLayout layout = new TextLayout(tickLabel, font, new FontRenderContext(null, true, false));
TextLayout layout = new TextLayout(tickLabel, getChartPainter().getStyleManager().getAxisTickLabelsFont(), frc);
Rectangle2D tickLabelBounds = layout.getBounds();
// layout.draw(g, (float) xOffset, (float) (yOffset + axisTick.getAxis().getPaintZone().getHeight() - tickLocation + tickLabelBounds.getHeight() / 2.0));
Shape shape = layout.getOutline(null);
AffineTransform orig = g.getTransform();
AffineTransform at = new AffineTransform();
at.translate((float) xOffset, (float) (yOffset + axisTick.getAxis().getPaintZone().getHeight() - tickLocation + tickLabelBounds.getHeight() / 2.0));
g.transform(at);
g.fill(shape);
g.setTransform(orig);
更新:
事实证明这是与arm64 java相关的。当使用64位Java时,问题如下所示,当使用32位Java时,它工作正常。我仍然不知道为什么或者如何解决这个问题。
发布于 2018-08-01 05:17:15
这个问题与运行在odroid c2上的oracles arm64 Java有关。切换到Zulu Java后,这个问题就解决了。
https://stackoverflow.com/questions/45785116
复制相似问题