マスク画像を使って、透明色を設定する

本来透明色なる色は存在しません。
透明色を実現するには、ラスターオペレーションを使ってピクセルごとの演算を行います。
背景の透明部分を黒に設定した画像と、キャラクタのシルエットを黒に、背景を白に設定した画像を使って黒を透明にして描画します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. 代表的なラスターオペレーションです。
    SRCCOPY コピー先= コピー元
    SRCPAINT コピー先|= コピー元
    SRCAND コピー先&= コピー元
    SRCINVERT コピー先^= コピー元
    SRCERASE コピー先= ~コピー先 & コピー元
    NOTSRCCOPY コピー先= ~コピー元
    NOTSRCERASEコピー先= ~コピー先 & ~コピー元
    DSTINVERT コピー先= ~コピー先
    BLACKNESS コピー先= 黒
    WHITENESS コピー先= 白
  2. ページ先頭の画像を使って、黒を透明色で描画する手順は、次のようになります。
    1. 背景画像を描画します。
    2. 背景とマスク画像(右側の画像)を使って、シルエットの部分を真っ黒にします。
      SRCAND を使う
    3. その上から背景を透明色(黒)にした画像を重ね合わせます。
      SRCSRCPAINT を使う
  3. 背景画像と背景を透明にした画像とマスク画像を使って黒を透明色に設定して描画して下さい。

超初心者のプログラム入門(Win32API C++)