• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:drawStringで文字間隔の調整)

drawStringで文字間隔の調整方法はありますか?

このQ&Aのポイント
  • Graphics.drawString()を使用して文字を描画するときに、文字間隔を設定したいと思っています。しかし、FontMetricsやgetWidths()メソッドを使っても正確な文字間隔を設定することはできず、この問題を解決する方法を知りたいです。
  • 現在、drawString()メソッドを使用して文字を描画していますが、文字間隔を設定できないことに悩んでいます。FontMetricsやgetWidths()メソッドを試してみましたが、正確な文字間隔が設定できず、望んだ精度で文字を描画することができません。
  • 文字間隔を調整するためには、drawString()メソッドでの文字幅の取得が必要ですが、現在の方法では正確な文字幅が取得できません。この問題を解決するために、文字間隔を設定する方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.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);   } }

masa_tarou
質問者

お礼

Graphics2Dのdrawstringを見落としていたみたです。 float型での描画のメソッドが準備してあったのですね。 サンプルソースまでつけていただいて、本当にありがとうございます。 無事、目的の精度で描画することができました。

関連するQ&A