我这辈子都想不出如何使用带 alpha channel 的 PNG 文件创建 ImageList 控件。我想将它用作我的 ListView 控件中的小图像。
描述我尝试过的东西似乎难以抗拒,因为我已经为此工作了几个小时。我在网上搜索过,几乎没有发现任何相关内容。
我尝试过的大多数操作只会导致 ListView 显示时没有任何图像。
然后我尝试将以下文件作为资源导入到我的项目中。
即使我说我正在导入位图,资源查看器也会将此资源放入名为 PNG 的部分。当前版本的 Visual Studio 似乎完全无法理解 PNG 文件。
但现在我什至无法将它加载到 Visual Studio 中。我收到以下错误。此错误似乎来自资源编译器。
error RC2170 : bitmap res\Folders.png is not in 3.00 format.
我已经使用 IconWorkshop 重新创建了图像——我很确定我的图像采用的是当前格式。对于 Visual Studio 来说可能太新了。
有谁知道如何在 ImageList/ListView 中使用 PNG/alpha channel 图像?
最佳答案
正如 xMRi 所建议的,我能够通过将我的 PNG 图像保存为 32 位/alpha channel BMP 文件来完成这项工作。
对加载资源的支持有一些限制。例如,CBitmap::GetBitmapDimension
返回一个空矩形。 Visual Studio 不支持 alpha channel 和高质量位图。
尽管如此,如果我对图像大小进行硬编码,它确实有效。我的 ListView 控件在选择项目时正确突出显示图像而不突出显示透明区域。因此正确识别了 alpha channel 。
关于c++ - 带有 PNG/Alpha channel 图像的图像列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984462/