とりあえず、透明色制御の命令がないかなぁって見回してみたけど・・
イメージリストコントロールとかなら、あるんだけどオンラインソフトではOCX類はまずいし(^^;
自力で何とかしよう。
マスクを準備して、ANDとORで出します。
メモ用紙に0や1をたくさん書いて計算してました(^^;
たとえば・・。
このプチキャラと
このマップパーツを合成して・・
こうする場合。

透明になる部分を黒(R00,G00,B00)にしておきます。

プチキャラの形に合わせてマスクを作ります。
透明になる部分を白(R255,G255,B255)
プチキャラを描画する部分を黒(R00,G00,B00)で描きます。
BitBltを使って、マップパーツとマスクをAND演算で合成します。
その結果と、プチキャラとをOR演算で合成します。
サンプル
☆宣言
Declare Function BitBlt Lib "gdi32.dll" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
これをPictureBox、"Map"
"Puti"。ちなみに3枚とも40x40ピクセルです。
"Mask"。フォームはForm1とします。
この時、こうなります。
BitBlt Form1.Map.hdc, 0, 0, 40, 40, Form1.Mask.hdc, 0, 0, vbSrcAnd
BitBlt Form1.Map.hdc, 0, 0, 40, 40, Form1.Puti.hdc, 0, 0, vbSrcPaint
Visual Basicページへ
|