使用gdi +绘制hdc是否会导致alpha位图的预乘?

时间:2010-01-26 11:07:08

标签: c++ winapi gdi+ gdi alphablending

我正在尝试使用GDI + DrawImage在CImage对象上绘制一些位图。由此产生的CImage位图似乎被alpha预乘,但我在msdn文档中找不到任何提及。

当我在CImage HDC上使用DrawImage绘制时会发生什么?

1 个答案:

答案 0 :(得分:0)

是的,结果将被预乘,因为AlphaBlend函数需要预乘的alphas。这在BLENDFUNCTION结构的文档 AlphaFormat 成员中注明:

  

AC_SRC_ALPHA - 当位图具有Alpha通道(即每像素alpha)时,将设置此标志。请注意,API使用预乘alpha,这意味着位图中的红色,绿色和蓝色通道值必须与alpha通道值预乘。例如,如果alpha通道值为x,则红色,绿色和蓝色通道必须乘以x并在调用之前除以0xff。

参考:http://msdn.microsoft.com/en-us/library/dd183393(v=vs.85).aspx