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

标签 java swing graphics graphics2d

第一个“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/

相关文章:

java - Javadoc 1.5 和 1.6 中缺少 enum.valueOf(String name)

java - 重构。翻转代码中所有出现的 (b != a) 和 (b == a)

java - 从 MySQL 归档 Jframe

c - 用于基于刻度的模拟的简单图形库

c++ - 光线追踪/Phong 模型漫反射组件

java - 如何使用mockito答案从模拟方法修改void方法的输入参数

java - Spring REST 安全 : Enable Basic Authentication only on a specific endpoint

java - 半透明 JPanel 不清除背景/在 Linux 中显示背景伪像

java - 跟踪棋子

ios - 在 Core Graphics 中获取具有相同笔画的不同线条