
Graphics.drawString()を使用して文字を描画するときに
その文字間隔を設定したいと思っていますが、方法はございますでしょうか?
FontMetrics等を確認しましたが、文字間隔を設定する
ようなメソッドはありませんでした。
試しに、一文字ずつFontMetrics.getWidths(hogehoge)で文字幅を取得して、描画してみましたが、getWidthsの結果が正しく戻ってこない場合もあり、且つ設定できる文字間隔がInt型となることから当方の希望する精度での
文字間隔の設定はできませんでした。
どなたか、ご存じの方はいらっしゃいますでしょうか?
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);
}
}
Graphics2Dのdrawstringを見落としていたみたです。
float型での描画のメソッドが準備してあったのですね。
サンプルソースまでつけていただいて、本当にありがとうございます。
無事、目的の精度で描画することができました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
列挙型:次の要素を返す?
-
配列のメソッド
-
javascriptからjavaを呼び出したい
-
boolean型のフィールドとゲッタ...
-
final修飾子を使っているのに、...
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
onClickで関数呼出し後に、結果...
-
[log4j]ログ出力クラスでのメソ...
-
VBA コピーが出来ません…!
-
Labelコントロールに数字を代入...
-
VB.NETで正規表現を教え...
-
タブコントロールの問題 (VB)
-
VBA/FIND関数を使っての先頭文...
-
VBAでSaveAs使用し、指定してい...
-
PDFファイルから別ウィンドウで...
-
0歳児の指しゃぶりに関して
-
AccessレポートのラベルをVBAで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
配列のメソッド
-
mainメソッドのthrows節で設定...
-
final修飾子を使っているのに、...
-
0歳児の指しゃぶりに関して
-
javascriptからjavaを呼び出したい
-
DataGridViewでセルクリックイ...
-
JSPで<SELECT>の中にDBから持っ...
-
boolean型のフィールドとゲッタ...
-
Labelコントロールに数字を代入...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
eclipse-Tomcatでのデバッグに...
-
CALLされていないメソッドを見...
-
FEM解析の読み方は?
-
エクセルVBAにおけるON TIMEメ...
-
Application.Wait の参照設定
-
コマンドプロンプト実行後に画...
-
VBA コピーが出来ません…!
-
drawStringで文字間隔の調整
おすすめ情報