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#
-
C# Font GdiCharSet
その他(プログラミング・Web制作)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
-
4
textboxユーザーコントロールのコピー&ペースト制御
Visual Basic(VBA)
-
5
VBの画面サイズについて
Visual Basic(VBA)
-
6
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
7
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
8
CloseとDisposeの違い
Visual Basic(VBA)
-
9
Ctrl + Cなど複数の入力キーの感知
Visual Basic(VBA)
-
10
フォームの再読み込み
Visual Basic(VBA)
-
11
コンテキストメニュークリック時のイベントハンドラ
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
コマンドプロンプト実行後に画...
-
JSPで<SELECT>の中にDBから持っ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
-
mainメソッドのthrows節で設定...
-
Excel VBA でExcelを終了したい...
-
onClickで関数呼出し後に、結果...
-
エクセルVBAにおけるON TIMEメ...
-
配列のメソッド
-
Refreshメソッドの使い方
-
DataGridViewでセルクリックイ...
-
シンボルを解決できません。 ...
-
ListViewにて行追加
-
AdapterView<?> parent この部...
-
worksheets & rows メソッドは...
-
サーブレット DBにある生年月...
-
ポストバック時のDatasourceバ...
-
ASP.NET MVCのホームページ表...
-
ダブルコロンの役割
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
おすすめ情報