DXRubyリファレンスマニュアル刷新計画

メソッド関連の説明がいい加減なので、詳細な解説を書いてやろうかと考えている。
ためしに書いてみたのが以下。

Window.draw

画像を描画します。

Window.draw( x, y, image[, z = 0])

■解説

指定位置に指定の画像を描画します。
xとyは座標で、画面の左上が(0,0)となるピクセル位置で指定します。
imageはImageクラスのオブジェクトです。
zは描画順序で、小さい数字が奥となるように描画されます。。

■詳細

座標は32bit整数で管理しているため、画面外の位置を指定することもできますが、完全に画面外を指定すると描画されません。
上下左右にはみ出すことは可能です。
指定位置に画像の左上の点が重なるように描画されます。

メソッド実行時点では実際の描画はされず、描画登録のみとなります。
Window.loopの処理内、もしくはWindpw.updateメソッドの実行でz引数の小さい順に実際の描画がされます。
このような仕組みのため、Window.draw→最初のdrawで使ったImageオブジェクト編集→同じImageオブジェクトをWindow.drawとすると、
はじめのWindow.drawの描画画像も変更されます。
画面に描画されると登録はすべて解除されます。それ以外の方法で登録したものを解除することはできません。

imageの指定はImageクラスのオブジェクトもしくはImageクラスの派生クラスのオブジェクトを指定できます。

z引数にはマイナスや実数も使えます。同じ値の場合は最初にdrawしたものが一番奥になります。
描画登録の全てのz引数が0の場合はソート処理が省略されます。

※DXRuby1.0.5では、Window.drawメソッドではimageで指定したオブジェクトを束縛しません。
  これは、グローバル変数インスタンス変数で参照を保持しておかないと、
  指定したImageオブジェクトが描画処理前にGCで回収されてしまう可能性があることを示しています。
  例えば次のようなコードを書くとSegmentation faultで異常終了します。
require 'dxruby'

def sample_draw
  image = Image.new(128, 128, [255,255,255])
  Window.draw(0, 0, image)
end

Window.loop do
  sample_draw
  GC.start
end

■サンプルコード

画面の左上に白い四角が描画されます。

require 'dxruby'

image = Image.new(128, 128, [255, 255, 255])

Window.loop do
  Window.draw(0, 0, image)
end

■関連項目

この調子で全メソッドの説明なんて書いてられない。
どうしたもんか。