String
Javaでピクセル単位の幅を計算するには? たとえば、「Hello World!」という文字列があります。フォントファミリーとサイズも考慮して、ピクセル単位の長さは?
5 に答える
つまり、質問は使用しているフレームワークによって異なります。たとえば、AWT を使用していて、Graphics
objectgraphics
とFont
objectがあるfont
場合、次のことができます。
FontMetrics metrics = graphics.getFontMetrics(font);
int width = metrics.stringWidth("Hello world!");
詳しくはこちらをご覧ください。
このようなものを試すことができます
Graphics2D g2d = ...
Font font = ...
Rectangle2D r = font.getStringBounds("hello world!", g2d.getFontRenderContext());
System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");
このドキュメントを参照すると、役立つ場合があります。
あなたが達成したいことに基づいて、あなたが望むものを達成する方法はたくさんあります。例えば...
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
FontMetrics fm = g2d.getFontMetrics();
System.out.println(fm.stringWidth("This is a simple test"));
g2d.dispose();
しかし、これはそのコンテキストにのみ関連性がBufferedImage
ありGraphics
、画面やプリンターのようなものに変換されることはありません。
ただし、コンテキストがある限りGraphics
、同じ結果を得ることができます。
この例では、明らかに、コンテキストにインストールされているデフォルトのフォントを使用していGraphics
ますが、必要に応じて変更できます...
FontMetricsを使用できます。FontMetrics クラスは、特定の画面での特定のフォントのレンダリングに関する情報をカプセル化するフォント メトリック オブジェクトを定義します。
以下のようなことができます
Font font = new Font("Verdana", Font.PLAIN, 10);
FontMetrics metrics = new FontMetrics(font) {
};
Rectangle2D bounds = metrics.getStringBounds("Hello World!", null);
int widthInPixels = (int) bounds.getWidth();
それを行うにはいくつかの方法がありますlabel.getElement().getClientWidth();
。テキストがラベルにある場合は試すことができます。AWT を使用している場合は、次を使用できますGraphics.getFontMetrics
。FontMetrics.stringWidth