Study::Bitmap でマスク画像を取得するためには Study::Bitmap::getMask() メソッドを使います。
ラスターイメージを透過転送するためにはマスク画像が必要ですが、 Study::Bitmap を使うとビットマップ画像からマスク画像を自動的に作ることができます。やり方は簡単、次のように読み込んで Study::Bitmap::getMask() メソッドを呼ぶだけです。
Study::Bitmap player; // hBackBuffer と互換性のあるビットマップイメージを player.bmp から作る // このとき緑色 (255, 0, 255) を背景色とする player.load(hBackBuffer, TEXT("player.bmp"), RGB(255, 0, 255)); // ビットマップイメージのデバイスコンテキストハンドルを取得する HDC bitmap = player.getBitmap(); // player.bmp を取得する HDC mask = player.getMask(); // player.bmp のマスク画像を取得する // player のイメージを hBackBuffer へ透過転送する BitBlt(hBackBuffer, x, y, width, height, mask, u, v, SRCAND); BitBlt(hBackBuffer, x, y, width, height, bitmap, u, v, SRCPAINT);
マスク画像を自分で作るよりだいぶ楽ですね。
Contributions