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 预乘?我收到相互矛盾的信息的主要内容,如果未能解决你的问题,请参考以下文章
我们是不是应该在将图像设置为 UITableView 中的 imageView 之前缩放图像