java.awt.Font
GUIコンポーネントを使用しない特定のオブジェクトを指定して、文字列の長さをピクセル単位で計算する方法はありますか?
質問する
15298 次
4 に答える
10
GUIコンポーネントを使用しないのですか?
ここで何を意味するかによって異なります。受信せずにやりたいという意味だと思いますHeadlessException
。
最良の方法は、BufferedImage
. AFAIK、これはスローしませんHeadlessException
:
Font font = ... ;
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
FontMetrics fm = img.getGraphics().getFontMetrics(font);
int width = fm.stringWidth("Your string");
このようなものを使用する以外に、私はあなたができるとは思わない。FontMetrics
を作成してフォント サイズ情報を提供するには、グラフィックス コンテキストが必要です。
于 2012-11-12T14:49:54.720 に答える
3
オブジェクトを使用してGraphics2D
、フォントの境界 (幅を含む) を取得できます。
Graphics2D g2d = ...
Font font = ...
Rectangle2D f = font.getStringBounds("hello world!", g2d.getFontRenderContext());
ただし、それはGraphics2D
オブジェクトを取得する方法によって異なります (たとえば、からImage
)。
于 2012-11-12T14:47:13.450 に答える
2
これにより、(137.0、15.09375)の出力が得られます。単位が何であるかはわかりませんが、確かに比例して正しく見え、Graphics2D を直接使用していません。
Font f = new Font("Ariel", Font.PLAIN, 12);
Rectangle2D r = f.getStringBounds("Hello World! Hello World!", new FontRenderContext(null, RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT, RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");
于 2012-11-12T15:12:24.057 に答える