J'essaie de dessiner un bitmap sur un objet CImage en utilisant GDI + DrawImage. La bitmap CImage résultante semble être prémultipliée par alpha mais je ne trouve aucune mention de cela dans la documentation msdn. Que se passe-t-il lorsque je dessine à l'aide de DrawImage sur un CImage HDC?Dessiner un hdc en utilisant gdi + entraîne-t-il une prémultiplication par un bitmap alpha?
1
A
Répondre
0
Oui, le résultat sera pré-multiplié car la fonction AlphaBlend attend des alphas pré-multipliés. Ceci est indiqué dans la documentation AlphaFormat membre de la structure BLENDFUNCTION
:
AC_SRC_ALPHA - L'indicateur est activé lorsque le bitmap a un canal alpha (qui est, alpha par pixel). Notez que les API utilisent l'alpha prémultiplié, ce qui signifie que les valeurs de canal rouge, vert et bleu dans le bitmap doivent être prémultipliées avec la valeur du canal alpha. Par exemple, si la valeur du canal alpha est x, les canaux rouge, vert et bleu doivent être multipliés par x et divisés par 0xff avant l'appel.
Ref: http://msdn.microsoft.com/en-us/library/dd183393(v=vs.85).aspx