◆ 第2回 ウィンドウに文字を表示しよう!
2008-04-10
記念すべき2回目の記事です。
今回は、ウィンドウに文字を表示させたいと思います。
ウィンドウに文字を表示するには、contentsメソッドを使用します。
これは、ウィンドウ内容として表示するビットマップ (Bitmap) への参照をするものです。
そして、文字の描画はBitmapクラスのdraw_textを使用します。
つまり、文字は画像だということですね。
では、前回と同じようにイベントコマンドのスクリプトへ記述してください。
# ウィンドウを作成
win = Window_Base.new(150, 100, 244, 216)
# 文字を描画
win.contents.draw_text(0, 0, 212, 24, "文字")
# 2秒間待つ
120.times do Graphics.update end
# ウィンドウを消去
win.dispose
では、実行してみてください。win = Window_Base.new(150, 100, 244, 216)
# 文字を描画
win.contents.draw_text(0, 0, 212, 24, "文字")
# 2秒間待つ
120.times do Graphics.update end
# ウィンドウを消去
win.dispose
あ、スクリプトなどはコピペせずに、自分で記述したほうが上達が早いですよ

それじゃ、説明。
まずは、draw_textの引数について。

最初の4つは、ウィンドウの時と同じですね。
(x座標, y座標, 横幅, 縦幅, 描画文字)
ここで気をつけるのは、x,y座標です。
この座標は、今回作成したウィンドウ内の座標だということです。
そしてもう1つ、ウィンドウ内の幅は16pxずつ小さくなっています。
そのため、横幅と縦幅を-32したサイズが全体のサイズだと考えてください。
意外と人に説明するのって難しいね

いろいろ試して自分なりの解釈をしてください。
縦幅だけが小さいですよね?
これは、縦幅を文字の大きさに合わせているからです。
下記の例を実行するとわかると思いますが、文字は上下を空けて真ん中に表示されます。
# ウィンドウを作成
win = Window_Base.new(150, 100, 244, 216)
# 文字を描画
win.contents.draw_text(0, 0, 212, 72, "文字")
# 2秒間待つ
120.times do Graphics.update end
# ウィンドウを消去
win.dispose
ウィンドウの真ん中に文字を表示したいときは、ウィンドウの縦幅 - 32 をすればいいわけです。win = Window_Base.new(150, 100, 244, 216)
# 文字を描画
win.contents.draw_text(0, 0, 212, 72, "文字")
# 2秒間待つ
120.times do Graphics.update end
# ウィンドウを消去
win.dispose
さて、横の場合はどうでしょうか?
draw_text には、文字位置を調整する機能も付いています。
# ウィンドウを作成
win = Window_Base.new(150, 100, 244, 216)
# 文字を描画(中央揃え)
win.contents.draw_text(0, 0, 212, 184, "文字", 1)
# 2秒間待つ
120.times do Graphics.update end
# ウィンドウを消去
win.dispose
はい、文字がど真ん中に表示されたのではないですか?win = Window_Base.new(150, 100, 244, 216)
# 文字を描画(中央揃え)
win.contents.draw_text(0, 0, 212, 184, "文字", 1)
# 2秒間待つ
120.times do Graphics.update end
# ウィンドウを消去
win.dispose
6つ目のパラメータは、文字の位置を指しています。
0:左揃え、1:中央揃え、2:右揃え。省略するとすべて左揃えです。
消すときは win.contents.clear を実行してください。
◆ 今回のポイント
・ ウィンドウ内の描画可能範囲は、ウィンドウの横・縦幅を -32 したサイズである。
・ 文字を描画する座標の指定は、描画域のものである。
・ デフォルトでは水平位置は、左揃えである。
・ 垂直位置は、常に中央揃えである。
・ ウィンドウ内の描画可能範囲は、ウィンドウの横・縦幅を -32 したサイズである。
・ 文字を描画する座標の指定は、描画域のものである。
・ デフォルトでは水平位置は、左揃えである。
・ 垂直位置は、常に中央揃えである。