web-dev-qa-db-ja.com

Java-グラフィックなしのFontMetrics

グラフィックを使用せずに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();
32
piotrek

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

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

component.getFontMetrics(font);
21
amorfis

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

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

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

27
Lonzak