Graphics2D - 缩放坐标空间中的文本很大

时间:2014-10-17 20:53:01

标签: java swing graphics graphics2d

第一个“foo”是正常的,但第二个是如此巨大,我只能看到“f”的基础。 font-size是默认值。

    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)处的文字,并恢复转换。

1 个答案:

答案 0 :(得分:2)

您可以使用Font方法

public Font deriveFont(float size)

获取所需的字体大小字体。猜猜0.02应该没问题。