通常、次のようなグラフィックインスタンスを取得します。
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
ただし、私が取り組んでいる現在のプロジェクトでは、上記の変数widthとheight変数は、後でグラフィックスインスタンスに描画される多数のテキストフラグメントのサイズに依存します。ただし、使用されているフォントのサイズを取得するには、通常、グラフィックスオブジェクトから取得したFontMetricsを使用します。
FontMetrics metrics = g.getFontMetrics();
だから、私は厄介な小さな依存サイクルを持っています。テキストのサイズがわかるまでグラフィックスオブジェクトを作成できません。また、グラフィックスオブジェクトができるまでテキストのサイズもわかりません。BufferedImage1つの解決策は、必要なインスタンスを取得するために最初に別の/Graphicsペアを作成するFontMetricsことですが、これは不要のようです。
- それで、もっと良い方法はありますか?
- または、フォントの幅、高さなどのプロパティが、テキストを描画する対象(グラフィック、コンポーネントなど)に何らかの形で依存している場合がありますか?