ILC_COLOR32 图像列表中的图像是不是经过 alpha 预乘?我收到相互矛盾的信息

Posted

技术标签:

【中文标题】ILC_COLOR32 图像列表中的图像是不是经过 alpha 预乘?我收到相互矛盾的信息【英文标题】:Are images in ILC_COLOR32 image lists alpha premultiplied or not? I'm getting conflicting informationILC_COLOR32 图像列表中的图像是否经过 alpha 预乘?我收到相互矛盾的信息 【发布时间】:2014-08-30 02:52:24 【问题描述】:

这里有一个非常简单的问题:ILC_COLOR32 图像列表是否经过 alpha 预乘? Stack Overflow 上的各种问题,like this one,暗示它们是;但是,this wxWidgets bug 另有说明。 The only place where Microsoft actually says ILC_COLOR32 is used for alpha-blended image list entries 没有说(所有ILC_COLOR32 的文档都说它是一个“32 位 DIB 部分”,如果我正确理解 BITMAPINFOHEADER 文档,技术上不包含 alpha 信息; 忽略每种颜色的前 8 位)。谢谢!

【问题讨论】:

BLENDFUNCTION structure 的文档说必须对 alpha 进行预乘,它是位图文档的一部分。 @MarkRansom: ImageList_Draw 没有被记录为使用 AlphaBlend (尽管很有可能)。 我看不出你链接的那个 SO 问题在哪里暗示它们是预乘的。 【参考方案1】:

您提供给ILC_COLOR32 图像列表并从中提取的图像没有预乘的 Alpha 通道。

【讨论】:

感谢您的信息!我已经更新了我的代码;我可能应该找到一个带有实际 alpha 混合的公共域图标来测试:| @andlabs 您可以使用内置的 Windows 图标进行测试。它们不可公开分发,但您已将它们授权给您的机器,因此您可以将它们用于测试。 :-) 查看%SystemRoot%\system32\imageres.dll 如果您拥有Visual Studio,也可以使用these icons,它曾经与旧版本捆绑在一起,但现在可以下载了。 大卫,我也是这么想的,但我没有发布答案,因为我没有权威的参考。您知道这是否记录在 MSDN 或其他地方的任何地方?还是您只是根据经验? @Cody 图像列表文档没有提到 pre mult alpha 的事实是我所知道的最好的。

以上是关于ILC_COLOR32 图像列表中的图像是不是经过 alpha 预乘?我收到相互矛盾的信息的主要内容,如果未能解决你的问题,请参考以下文章

难以从CImageList设置菜单项位图

显示扭曲图像的列表视图控件

如何在选择列表中添加图像?

我们是不是应该在将图像设置为 UITableView 中的 imageView 之前缩放图像

使用 simd 指令时,32 位图像处理是不是比 24 位图像处理快?

将列表中的多个图像合并为 PDF