画像を表すクラスです。
Image.new( width, height, color=[0,0,0,0] )
width(幅)/height(高さ)で表されるサイズのImageオブジェクトを生成して返します。
color([a, r, g, b]それぞれ0〜255の配列です)を指定すると全体がその色で初期化され、省略すると[0, 0, 0, 0]の透明色となります。
Image.load( filename, x=nil, y=nil, width=nil, height=nil )
filenameの画像を読み込み、Imageオブジェクトを生成して返します。
x/y/width/heightを指定するとその部分のみ切り出してImageオブジェクトを生成します。
サポートするファイル形式はjpgとpng、bmpその他ですが、カラーキーは対応していないので透明色のある絵はpngにしてください。
Image.loadTiles( filename, xcount, ycount, share_switch=true )
Image.load_tiles( filename, xcount, ycount, share_switch=true )
(旧)Image.loadToArray( filename, xcount, ycount, share_switch=true )
(旧)Image.load_to_array( filename, xcount, ycount, share_switch=true )
Image.createFromArray( width, height, array )
Image.create_from_array( width, height, array )
色情報を格納した配列からImageオブジェクトを生成して返します。
配列はalpha, red, green, blueの4つをピクセル数分並べたものです。
例)32×32ピクセルの白い四角は[255, 255, 255, 255] * 32 * 32と指定します。
Image.loadFromFileInMemory( string )
Image.load_from_file_in_memory( string )
Stringクラスのオブジェクトを渡してイメージオブジェクトを生成します。
ここで渡すStringオブジェクトは画像ファイルのバイナリそのままです。
Image#dispose
selfの画像リソースを解放します。
使わなくなったデータをdisposeしておくと、PCのメインメモリやビデオメモリを節約することができ、また、GC時の負荷も軽くなります。
dispose後、そのオブジェクトのメソッドを呼び出すと例外が発生します。
Image#delayed_dispose
selfの画像リソースを、delayed_disposeが呼ばれたフレームの描画処理が終わった後に解放します。
あるフレームで生成し、そのフレームの描画のみで使うImageがあった場合に、次フレームでdisposeするのは面倒ですが、このメソッドでdispose予約ができます。
次のフレーム以降、そのオブジェクトのメソッドを呼び出すと例外が発生します。
Image#disposed?
selfがdisposeされているかどうかをtrue/falseで返します。
Image#[x, y]
Imageオブジェクトの該当ピクセルの色を配列で取得します。
配列は[a, r, g, b]となります。
それぞれ0〜255の範囲です。
Image#[x, y]=color
Imageオブジェクトの該当ピクセルに色を設定します。
colorは配列で、[a, r, g, b]と指定します。
それぞれ0〜255の範囲です。
[r, g, b]で渡すとaは255になります。
Image#compare(x, y, color)
Imageオブジェクトの該当ピクセルの色がcolorと一致するかどうかをtrue/falseで返します。
colorは配列で、[a, r, g, b]と指定します。
それぞれ0〜255の範囲です。
[r, g, b]で渡すとaは比較されません。
Image#line(x1, y1, x2, y2, color)
Imageオブジェクトの(x1,y1)-(x2,y2)に線を描画します。
Image#box(x1, y1, x2, y2, color)
(x1,y1)-(x2,y2)の中を塗りつぶさない四角形を描画します。
Image#boxFill(x1, y1, x2, y2, color)
Image#box_fill(x1, y1, x2, y2, color)
Imageオブジェクトの(x1,y1)-(x2,y2)の範囲を塗りつぶします。
Image#circle(x, y, r, color)
Imageオブジェクトの(x,y)を中心とした半径rの円を描きます。
DXRuby1.2.2で円の描画アルゴリズムが変更され、Image.new(10,10).circle(5,5,5,[255,255,255])で上下左右ぴったりの円が描画できるようになりました。
Image#circleFill(x, y, r, color)
Image#circle_fill(x, y, r, color)
Imageオブジェクトの(x,y)を中心とした半径rの円を描き、塗りつぶします。
Image#triangle( x,1 y1, x2, y2, x3, y3, color )
Imageオブジェクトの(x1, y1)-(x2, y2)-(x3, y3)を結ぶ三角形を描画します。
Image#triangleFill( x,1 y1, x2, y2, x3, y3, color )
Image#triangle_fill( x,1 y1, x2, y2, x3, y3, color )
Imageオブジェクトの(x1, y1)-(x2, y2)-(x3, y3)を結ぶ三角形を描画し、塗りつぶします。
Image#fill(color)
Imageオブジェクトの全体をcolorで塗りつぶします。
Image#clear
Imageオブジェクトの全体を[0,0,0,0]で塗りつぶします。
Image#copyRect(x, y, image, x1=0, y1=0, width=image.width, height=image.height )
Image#copy_rect(x, y, image, x1=0, y1=0, width=image.width, height=image.height )
selfのオブジェクトのx/yの位置に、imageで指定したオブジェクトのx1/y1/width/heightで指定した部分をコピーします。
α値を無視した単純コピーです。
自分自身にコピーすることはできません。
Image#draw(x, y, image, x1=0, y1=0, width=image.width, height=image.height )
selfのオブジェクトのx/yの位置に、imageで指定したオブジェクトのx1/y1/width/heightで指定した部分をコピーします。
α値を考慮して半透明演算されます。
自分自身にコピーすることはできません。
selfのオブジェクトのx/yの位置に、fontで指定したフォントオブジェクトでstringを書き込みます。
colorは色配列で[r, g, b]を指定してください。
省略すると[255, 255, 255]の白文字となります。
[a, r, g, b]の形式でも指定は可能ですが、現在のバージョンではaは無視されます。
このメソッドでは文字列に"\n"を入れても改行することはできません。
文字コードはSJIS(Ruby1.8の場合)です。
Image#drawFontEx(x, y, string, font, hash={} )
Image#draw_font_ex(x, y, string, font, hash={} )
※DXRuby1.4.1 update!(aaスイッチ追加)
高品質な文字の描画をします。
selfのオブジェクトのx/yの位置に、fontで指定したフォントオブジェクトでstringを書き込みます。
このメソッドでは文字列に"\n"を入れても改行することはできません。
文字コードはSJIS(Ruby1.8の場合)です。
hashには以下のキーを指定できます。
:color ・・・配列で[R, G, B]、それぞれ0〜255、省略すると[255, 255, 255]、白文字になります。
:edge ・・・袋文字を描画するかどうかをtrue/falseで指定します。省略するとfalseになります。
:edge_color ・・・袋文字の枠色を指定します。配列で[R, G, B]、それぞれ0〜255、省略すると[0, 0, 0]、黒い枠になります。
:edge_width ・・・袋文字の枠の幅を0〜の数値で指定します。1で1ピクセルとなります。省略すると2になります。
:edge_level ・・・袋文字の枠の濃さを0〜の数値で指定します。大きいほど濃くなりますが、幅が大きいほど薄くなります。値の制限はありませんが、目安としては一桁ぐらいが実用範囲でしょう。省略すると4になります。
:shadow ・・・影を描画するかどうかをtrue/falseで指定します。省略するとfalseになります。
:shadow_edge ・・・edgeがtrueの場合に、枠の部分に対して影を付けるかどうかをtrue/falseで指定します。trueで枠の影が描かれます。省略するとfalseになります。
:shadow_color ・・・影の色を指定します。配列で[R, G, B]、それぞれ0〜255、省略すると[0, 0, 0]、黒い影になります。
:shadow_x ・・・影の位置を相対座標で指定します。+1は1ピクセル右になります。省略するとフォントサイズ/24+1になります。
:shadow_y ・・・影の位置を相対座標で指定します。+1は1ピクセル下になります。省略するとフォントサイズ/24+1になります。
:aa ・・・アンチエイリアスのon/offをtrue/falseで指定します。省略するとtrueになります。
Image#save( filename, format=nil )
selfの画像を指定のフォーマットで画像ファイルとして保存します。
formatは保存形式で、はFORMAT_JPG、FORMAT_PNG、FORMAT_BMP、FORMAT_DDSのどれかを指定してください。
省略するとファイル名の拡張子から自動判別されます。判別に失敗するとPNGになります。
Image#slice( x, y, width, height )
selfの画像から、x/y/width/heightで表される部分を切り出して新たなImageオブジェクトを生成します。
DXRuby1.2.2で新しいテクスチャが作成されるようになりました。
Image#sliceTiles( xcount, ycount )
Image#slice_tiles( xcount, ycount )
(旧)Image#sliceToArray( xcount, ycount )
(旧)Image#slice_to_array( xcount, ycount )
selfの画像を横・縦それぞれxcount個、ycount個に分割し、
左上から右に向かう順序でImageオブジェクトの配列を生成して返します。
DXRuby1.2.2で新しいテクスチャが作成されるようになりました。
旧のメソッド名でも使うことができます。
Image#dup
Image#clone
Image#setColorKey( color )
Image#set_color_key( color )
selfの画像で、colorで指定された色と同じ色のα値を0にします。
colorは3要素色配列の[r, g, b]で指定してください。
[a, r, g, b]で指定するとaは無視してRGBのみ比較されます。
Image#width
Image#height
Image#flush( color )
※DXRuby1.4.1 new!
selfの透明じゃないピクセルをすべてcolorで指定した色に置き換えたImageオブジェクトを生成して返します。
colorが3要素配列の場合、元のピクセルのα値が保持されます。半透明がある絵のフラッシュ後に半透明状態を残したい時にどうぞ。
4要素配列を指定するとα値も置き換えます。
遅いのでリアルタイムで毎フレーム実行することはお勧めしません。
Image#effect_image_font( hash )
※DXRuby1.4.1 new!
selfの赤成分とα成分を合成し、それをグリフ情報として使ってdraw_font_exと同じエフェクトをかけたImageオブジェクトを生成して返します。hashはdraw_font_exのhashと同じです。
赤成分とα成分を合成するので例えばα255で白と黒のモノクロ画像や、αでアンチエイリアシングされた白黒モノクロ画像などを扱うことができます。白を赤に置き換えても同様です。
遅いのでリアルタイムで毎フレーム実行することはお勧めしません。
Image#change_hls( hue, luminance, saturation )
※DXRuby1.4.1 new!
selfに対して色相、輝度、彩度それぞれの差分を加えたImageオブジェクトを生成して返します。
引数はすべて整数です。
hueは色相です。360度系なので、-360もしくは+360すると一周して同じ色になります。
luminanceは輝度で、-100すると真っ黒、+100すると真っ白になります。
saturationは彩度で、-100するとモノクロ、+100すると最も鮮やかになります。
遅いのでリアルタイムで毎フレーム実行することはお勧めしません。