★ Bitmapクラスの拡張 XP/VX共用

● 目次

● 概要

Bitmapクラスに機能を追加します。XP/VX共用


● instance methods

・Bitmap#png_save( filename [,level [,filter]])
BitmapオブジェクトをPNG形式で保存します。
levelで圧縮レベルを指定します。有効な値は0(無圧縮)~9(最大圧縮)。デフォルトは9です。
filterで圧縮処理に使うフィルタを指定できます。デフォルトはBitmap::PNG_NO_FILTERSです。

・Bitmap#blend_blt(x, y, src_bitmap, src_rect [,blend_type [,opacity] ])
ブレンディング(※下地は透過なし画像にのみ対応)
合成タイプ
  • 0: 通常(bltと同じ)
  • 1: 加算
  • 2: 減算
  • 3: 乗算
  • 4: 覆い焼き(ハイライト)
  • 5: 焼きこみ
  • 6: スクリーン
  • 7: オーバーレイ

・Bitmap#blur2([r])
ぼかし効果
RPGツクールVXには元々Bitmap#blurがあるのでBitmap#blur2としました。

・Bitmap#clip_mask(mask, x, y [,outer])
マスク画像を使って画像を切り抜きます。アルファチャンネルを乗算するような感じ。

・Bitmap#change_tone(red, green, blue [,simplify])
Fixnum red,green,blue: 各色のカラーバランス?-256~256の範囲の整数を指定してください
Fixnum simplify: αチャンネルが0(完全透明)のときに処理をしない。0以外のときON(デフォルト:1)

・Bitmap#invert()
色調反転(ネガポジ変換)

・Bitmap#mosaic([msw, msh])
・Bitmap#mosaic_rect(rect [, msw, msh])
全体もしくは一部にモザイクをつけます。

● 例

text_rect = Rect.new(0,0,100,24)
bitmap1 = Bitmap.new(150,100)                      # bitmapオブジェクトの作成
bitmap1.fill_rect(0,0,50,100,Color.new(255,0,0))   # 左側を赤で塗りつぶす
bitmap1.fill_rect(50,0,50,100,Color.new(0,255,0))  # 真中を緑で塗りつぶす
bitmap1.fill_rect(100,0,50,100,Color.new(0,0,255)) # 右側を青で塗りつぶす
bitmap1.fill_rect(text_rect, Color.new(0,0,0,128))
bitmap1.draw_text(text_rect, "Sample1")
bitmap1.png_save("sample1.png")
bitmap1.dispose

bitmap2 = Bitmap.new("sample")
bitmap2.blur2(3)
bitmap2.fill_rect(text_rect, Color.new(0,0,0,128))
bitmap2.draw_text(text_rect, "Sample2")
bitmap2.png_save("sample2.png")
bitmap2.dispose

bitmap3 = Bitmap.new("sample")
bitmap3.change_tone(128,0,-128)
bitmap3.fill_rect(text_rect, Color.new(0,0,0,128))
bitmap3.draw_text(text_rect, "Sample3")
bitmap3.png_save("sample3.png")
bitmap3.dispose


bitmap4 = Bitmap.new("sample")
mask = Bitmap.new("mask")
bitmap4.clip_mask(mask,60,80,64)
bitmap4.fill_rect(text_rect, Color.new(0,0,0,128))
bitmap4.draw_text(text_rect, "Sample4" )
bitmap4.png_save("sample4.png")
mask.dispose
bitmap4.dispose

bitmap5 = Bitmap.new("sample")
bitmap5.invert
bitmap5.fill_rect(text_rect, Color.new(0,0,0,128))
bitmap5.draw_text(text_rect, "Sample5")
bitmap5.png_save("sample5.png")
bitmap5.dispose

bitmap6 = Bitmap.new("sample")
rect = Rect.new(110,105,90,40)
bitmap6.mosaic_rect(rect,10,10)
bitmap6.fill_rect(text_rect, Color.new(0,0,0,128))
bitmap6.draw_text(text_rect, "Sample6")
bitmap6.png_save("sample6.png")
bitmap6.dispose
元画像

サンプルの元画像に緋龍華 麒麟様のキャラクターなんとか機で作成した画像を使わせていただきました。

元画像 マスク画像
出力画像
sample1 sample2 sample3 sample4 sample5 sample6

● ダウンロード

mainより上に挿入してください

・DLL版 ver0.1.2.4(安定版) (2010/07/14 更新)
DLL&スクリプト
ファイル: hn_rg_bitmap0124.zip
バージョン: 0.1.2.4
最終更新: 2010/07/14
サイズ: 95.6 KB (97,912 バイト)
MD5: C4D4DC4BABBAC23249E6104C6D85FE61

・DLL版 ver0.1.2.5 beta (2010/10/12 更新)

Bitmap.new(width, height)で大きなサイズ(width * height >= 4194304)を指定すると Bitmapの作成に失敗問題に試験的に対応してみました。 大体(width * height < 1073741823)位までのサイズはいけそうな感じです。

オプションでON・OFFを切り替えられます。

DLL&スクリプト(ベータ)
ファイル: hn_rg_bitmap0125_beta.zip
バージョン: 0.1.2.5 beta
最終更新: 2010/10/12
サイズ: 97.0 KB (99,386 バイト)
MD5: 9AEFE894131552430CB1987A65B396B5

● 更新履歴


● 参考サイト

RPGTKOOLXP/RGSS Wiki様のBitmapのMarshal対応スクリプトを参考にさせていただきました。

RPGTKOOLXP/RGSS Wiki