第一个“foo”很正常,但第二个太大了,我只能看到“f”的底部。字体大小是默认值。
BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
Shape ellipse = new Ellipse2D.Double(0, 0, 1.0, 1.0);
g2.setPaint(Color.RED);
g2.drawString("foo", 100, 100);
g2.scale(500.0f / length, 500.0f / length);
g2.drawString("foo", 1, 1);
更改字体大小不会有帮助,因为它只允许 int
大小,而对比例有意义的大小类似于 0.02
。
我需要在缩放空间中绘制文本的原因是因为我正在绘制节点网格,并且我想将坐标缩放到每个维度中的节点数量。这样我就不必进行复杂的计算。
我需要文本来标记边缘。
更新: 每次我想要绘制文本时,我都可以通过执行以下顺序来获取文本:保存变换、转换到缩放空间中的所需位置、取消缩放、绘制文本(0, 0)
处的文本,并恢复变换。
最佳答案
您可以使用字体方法
public Font deriveFont(float size)
获取所需字体大小的字体。我猜 0.02 应该没问题。
关于java - Graphics2D - 文本在缩放坐标空间中很大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433278/