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で質問しましょう!
似たような質問が見つかりました
- Word(ワード) 表の縦罫線を移動するピッチ 1 2022/10/12 12:24
- Word(ワード) word 文字数のずれ 2 2023/01/18 10:04
- Word(ワード) ワード(2013)行間設定について 3 2023/08/08 09:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/01/06 08:39
- Word(ワード) wordで文字の感覚を設定したい。 3 2023/02/04 17:30
- 書道・茶道・華道 賞状の名前の書き方を教えて下さい 1 2022/11/27 19:53
- Word(ワード) wordで画像のように文字数を200文字間隔で表示させたいのですが、やり方が分かりません。 教えてい 1 2022/07/25 17:16
- Word(ワード) WindowsのWordについて質問をおねがいします! Wordに文字を入力するまでは良いのですが、 2 2022/08/11 17:08
- Word(ワード) Word 段落罫線の上下のスペースを広げるには 3 2023/08/04 10:52
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
C#を用いて描画する四角形の角を丸くする方法
C言語・C++・C#
-
VB.NETで縦書表示をしたいのですが可能でしょうか。
Visual Basic(VBA)
-
VBの画面サイズについて
Visual Basic(VBA)
-
-
4
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
5
コンソールアプリケーションのコマンドプロンプト画面を非表示
Visual Basic(VBA)
-
6
C#「オブジェクト参照が必要です」(初心者)
その他(プログラミング・Web制作)
-
7
C#で、画像の、指定した座標の色情報を取得し
C言語・C++・C#
-
8
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
9
C# 点の描き方をおしえてください。
C言語・C++・C#
-
10
C# Font GdiCharSet
その他(プログラミング・Web制作)
-
11
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本の教育って時間が無い中で...
-
エクセルVBAで、条件に一致する...
-
コマンドプロンプト実行後に画...
-
DataGridViewの行追加について。
-
現在、ASP.NET(言語:VB.NET)...
-
System.load() と System.loa...
-
Refreshメソッドの使い方
-
タグチメソッドと実験計画法の違い
-
JAVAによるDB接続(JDBC)
-
AdapterView<?> parent この部...
-
【sendkeysメソッドが動かずに...
-
C#の動的キャスト
-
drawStringで文字間隔の調整
-
エクセルVBAにおけるON TIMEメ...
-
関数とメソッドの違い
-
ExcelVBAのプログラムをJavaへ変換
-
VBA コピーが出来ません…!
-
final修飾子を使っているのに、...
-
「初心者です」-Xlint: depreca...
-
vbaエクセルマクロ RemoveDupli...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
final修飾子を使っているのに、...
-
JSPで<SELECT>の中にDBから持っ...
-
Labelコントロールに数字を代入...
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
DataGridViewでセルクリックイ...
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
コマンドプロンプト実行後に画...
-
配列のメソッド
-
日本の教育って時間が無い中で...
-
Refreshメソッドの使い方
-
mainメソッドのthrows節で設定...
-
【sendkeysメソッドが動かずに...
-
C# 演算 最大値 最小値 表現の仕方
-
VBA コピーが出来ません…!
-
Application.Wait の参照設定
-
ウィンドウを最前面にできません
-
for文(拡張)内の変数(ローカ...
おすすめ情報