透明色処理命令、行方不明

とりあえず、透明色制御の命令がないかなぁって見回してみたけど・・
イメージリストコントロールならあるのだけど、オンラインソフトでは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