5

StringJavaでピクセル単位の幅を計算するには? たとえば、「He​​llo World!」という文字列があります。フォントファミリーとサイズも考慮して、ピクセル単位の長さは?

4

5 に答える 5

4

つまり、質問は使用しているフレームワークによって異なります。たとえば、AWT を使用していて、GraphicsobjectgraphicsFontobjectがあるfont場合、次のことができます。

FontMetrics metrics = graphics.getFontMetrics(font);
int width = metrics.stringWidth("Hello world!");

詳しくはこちらをご覧ください。

于 2013-08-20T05:57:34.473 に答える
2

このようなものを試すことができます

Graphics2D g2d = ...
Font font = ...
Rectangle2D r = font.getStringBounds("hello world!", g2d.getFontRenderContext());
System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");

このドキュメントを参照すると、役立つ場合があります。

于 2013-08-20T05:57:41.840 に答える
1

あなたが達成したいことに基づいて、あなたが望むものを達成する方法はたくさんあります。例えば...

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ますが、必要に応じて変更できます...

于 2013-08-20T06:00:25.407 に答える
0

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(); 
于 2013-08-20T06:00:59.197 に答える
0

それを行うにはいくつかの方法がありますlabel.getElement().getClientWidth();。テキストがラベルにある場合は試すことができます。AWT を使用している場合は、次を使用できますGraphics.getFontMetricsFontMetrics.stringWidth

于 2013-08-20T05:58:39.557 に答える