GDI+ DrawImage を使用して CImage オブジェクトにビットマップを描画しようとしています。結果のCImageビットマップはアルファで事前に乗算されているようですが、msdnのドキュメントにはそれについての言及が見つかりません。
CImage HDC で DrawImage を使用して描画するとどうなりますか?
GDI+ DrawImage を使用して CImage オブジェクトにビットマップを描画しようとしています。結果のCImageビットマップはアルファで事前に乗算されているようですが、msdnのドキュメントにはそれについての言及が見つかりません。
CImage HDC で DrawImage を使用して描画するとどうなりますか?
はい、AlphaBlend関数は事前に乗算されたアルファを想定しているため、結果は事前に乗算されます。これは、構造体のAlphaFormatメンバーのドキュメントに記載されています。BLENDFUNCTION
AC_SRC_ALPHA - このフラグは、ビットマップにアルファ チャネル (つまり、ピクセルごとのアルファ) がある場合に設定されます。API はあらかじめ乗算されたアルファを使用することに注意してください。つまり、ビットマップの赤、緑、および青のチャネル値は、アルファ チャネル値で事前に乗算する必要があります。たとえば、アルファ チャネルの値が x の場合、呼び出しの前に、赤、緑、青のチャネルを x で乗算し、0xff で割る必要があります。
参照: http://msdn.microsoft.com/en-us/library/dd183393(v=vs.85).aspx