スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)

第13回 ウィンドウ枠上に文字

 2008-08-30
ウィンドウに文字を描画する際、16px の余白があり
この部分には、文字を描画できません。

今回は、その余白部分に文字を表示したいと思います。

SS200808302358.jpg


ではでは、クラスを定義してみます。
class Foo < Window_Base
  # 初期化
  def initialize(x, y, w, h)
    super(x, y, w, h)
    create_sprite_window(w, h)
  end
  # スプライト生成
  def create_sprite_window(w, h)
    @sp_win = Sprite.new
    @sp_win.bitmap = Bitmap.new(w, h)
    @sp_win.x = x
    @sp_win.y = y
    # ウィンドウより上に表示
    @sp_win.z = self.z + 1
  end
end
こんな感じでしょうか?
難しいことは一切していません。
ウィンドウと同じ大きさのスプライトを生成して
上に重ねただけです。
これで、ウィンドウの枠を無視して
文字を描画することが出来ます。

んで、描画するには他にメソッドを定義します。
先ほどのクラスの中に定義してください。
# スプライトに描画
def draw_sprite(x, y, w, h, t, a = 0)
  @sp_win.bitmap.draw_text(x, y, w, h, t, a)
end
# スプライトをクリア
def clear_sprite(*rect)
  # 配列の要素がないなら
  if rect.empty?
    @sp_win.bitmap.clear
  # 1つ目の要素が Rect クラスなら
  elsif rect[0].class == Rect
    @sp_win.bitmap.clear_rect(rect[0])
  # 上記以外なら
  else
    @sp_win.bitmap.clear_rect(rect[0], rect[1], rect[2], rect[3])
  end
end
ちょっと、クリアの処理に凝っちゃった

おっと、忘れるとこだった。
スプライトを使用した後は、必ず解放してあげないといけないよ
def dispose
  @sp_win.dispose
  super
end
解放しないとどういうことになるか知りたい人は、
このメソッドを定義せずに実行してみると良いよ。

では、イベントで確認します。
win = Foo.new(61, 54, 150, 100)
win.draw_sprite(0, 0, 150, 24, "TestMessage.")
Graphics.wait(60)
win.clear_sprite(0, 0, 150, 12)
Graphics.wait(60)
win.dispose


◆ 今回のポイント
・ Sprite を使用した後は、解放する。

コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/92-a109e0f2
≪ トップページへこのページの先頭へ  ≫
カレンダー
07 << 2017/08 >> 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

カテゴリー
最近の記事
最近のコメント
03/16 お返事
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事

タグクラウド

リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。