35

Graphics を使用せずに FontMetrics を取得するには? コンストラクターで FontMetrics を取得したいので、次のようにします。

BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB);
FontMetrics fm = bi.getGraphics().getFontMetrics(font);
int width = fm.stringWidth(pattern);
int height = fm.getHeight();
4

2 に答える 2

39

いいえ、必ずしもグラフィックス オブジェクトを取得/使用する必要はありません。

Font font = new Font("Helvetica",Font.PLAIN,12);
Canvas c = new Canvas();
FontMetrics fm = c.getFontMetrics(font);

ここで呼び出すc.getGraphics()と、null が返されます。一方、キャンバス ソリューションはヘッドレス モードでも機能します。

于 2013-08-08T09:56:26.740 に答える
22

うーん... FontMetrics を取得するためにグラフィックスが必要であることは非常に論理的です。フォントの高さ、幅などは、さまざまなディスプレイで異なる場合があります。

コンポーネントがある場合は、それを使用して FontMetrics を取得できます。

component.getFontMetrics(font);
于 2010-05-16T12:02:45.100 に答える