- ベストアンサー
drawStringで文字間隔の調整方法はありますか?
- Graphics.drawString()を使用して文字を描画するときに、文字間隔を設定したいと思っています。しかし、FontMetricsやgetWidths()メソッドを使っても正確な文字間隔を設定することはできず、この問題を解決する方法を知りたいです。
- 現在、drawString()メソッドを使用して文字を描画していますが、文字間隔を設定できないことに悩んでいます。FontMetricsやgetWidths()メソッドを試してみましたが、正確な文字間隔が設定できず、望んだ精度で文字を描画することができません。
- 文字間隔を調整するためには、drawString()メソッドでの文字幅の取得が必要ですが、現在の方法では正確な文字幅が取得できません。この問題を解決するために、文字間隔を設定する方法を知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 スマートなやり方なのかどうかわからないのですが、一文字づつdrawStringしていくのはどうでしょう? たとえば、こんな↓メソッドを用意して、paintメソッドやpaintComponentメソッドから呼んだらどうでしょう? public static void drawIntervalString(Graphics g, String string, int x, int y, int interval) { if (interval > 0) { FontMetrics metrics = g.getFontMetrics(); for (int i = 0; i < string.length(); i++) { char moji = string.charAt(i); g.drawString(Character.toString(moji), x, y); x = x + metrics.charWidth(moji) + interval; } } else { g.drawString(string, x, y); } } また、より細かくしたい場合は、Graphics2Dを使うようにこういう風に↓することもできると思います。 public static void drawIntervalString(Graphics2D g, String string, float x, float y, float interval) { if (interval > 0) { FontMetrics metrics = g.getFontMetrics(); for (int i = 0; i < string.length(); i++) { char moji = string.charAt(i); g.drawString(Character.toString(moji), x, y); x = x + metrics.charWidth(moji) + interval; } } else { g.drawString(string, x, y); } }
お礼
Graphics2Dのdrawstringを見落としていたみたです。 float型での描画のメソッドが準備してあったのですね。 サンプルソースまでつけていただいて、本当にありがとうございます。 無事、目的の精度で描画することができました。