【问题标题】:Does drawing over an hdc using gdi+ results in a premultiplied by alpha bitmap?使用 gdi+ 在 hdc 上绘图会导致预乘 alpha 位图吗?
【发布时间】:2011-01-09 11:36:57
【问题描述】:

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

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

【问题讨论】:

    标签: c++ winapi gdi+ gdi alphablending


    【解决方案1】:

    是的,结果将被预乘,因为AlphaBlend 函数需要预乘的 alpha。这在 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

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 2010-11-16
      • 2021-11-06
      • 2022-08-17
      • 1970-01-01
      • 2020-02-16
      相关资源
      最近更新 更多