VB6もBitBltもそろそろ過去のものになりつつあるように感じられます。しかし、新しい開発環境に移行するつもりが今のところはないのでこのまま続けさせてもらいます。
今回は、VB6で、透過色を持つGIF画像を、BitBltにより、透過情報が有効な状態で描画する方法を、できるだけ少ないコード量で実現することを考えてみます
まず、BitBltを使うためにはVB6ではPictureBoxをよく使用します。
今回、BitBltによる画像効果と逆の方法で透過転送を試みるので、ソースとマスクの色は逆にしておきます。元となるGIF画像を入れておくPictureBoxと、黒背景のソースを入れておくPictureBoxと、白背景のマスクを入れておくPictureBoxの3つを用意します。もちろん描画先のPictureBoxも忘れずに。
つまり、から、と、を作ればいいわけです。
とりあえず、それぞれの色を背景にしたPictureBoxのPictureにGIF画像を設定してやれば、と、が、出来上がります。
さて、はできたので、あとはからを作ればいいわけです。
そのためには、を、に、SRCINVERTで重ね合わせるのです。
SRCINVERTで重ね合わせると、全く同じ色は黒に、全く正反対の色は白になるのです(環境によってはうまくいかないかも)。
こうやってできたと、を、それぞれSRCANDとSRCPAINTで描画先に送り込むわけです。
プログラムとしては9行でできるので結構手軽かも。