0

我想在我的图表的网格中标记我的井号,但是当我使用字体大小 1 时,它会变得很大!有没有办法使字体大小小于1?我在编码方面是否遗漏了一些东西?

这是生成网格并尝试在哈希上放置标签的代码。

     for (double k = myStart1; k <= myEnd1; k = k + (myEnd1 - myStart1) / 8) {
    g2.setColor(Color.BLACK);
        g2.draw(new Line2D.Double(k, (max - min) / 60, k, -(max - min) / 60));
        String labelx=String.valueOf(k);
        Float xCo=Float.parseFloat(Double.toString(k));
        g2.setFont(new Font("SansSerif",Font.PLAIN,1));
        g2.drawString(labelx, xCo, 0);
    }

这是 x^2 生成的图表的屏幕截图。在此处输入图像描述

4

1 回答 1

5

正如我确定你已经注意到的那样,Font 构造函数采用一个int作为参数 - 有效地渲染不可能构造具有0 和 1 之间size的字体(至少使用此方法) 。size

然而,我确实发现该类的derivedFont方法Font特别有趣:

public Font derivedFont(float size)

通过复制当前 Font 对象并向其应用新大小来创建新的 Font 对象。

参数: size - 新字体的大小。

deriveFont方法声称构造一个具有给定大小的新 Font,将 afloat作为参数 - 因此,可以执行以下操作:

Font theFont = new Font("SansSerif",Font.PLAIN,1);
theFont = theFont.deriveFont(0.5);
g2.setFont(theFont);

生成大小为 0.5 的字体。

现在,我自己还没有测试过这个——设置一个图形程序需要时间,所以你比我更适合尝试它。但只是把它作为一种可能性扔出去。

于 2012-11-28T05:27:09.870 回答