c++ - 带有 PNG/Alpha channel 图像的图像列表

标签 c++ windows listview mfc imagelist

我这辈子都想不出如何使用带 alpha channel 的 PNG 文件创建 ImageList 控件。我想将它用作我的 ListView 控件中的小图像。

描述我尝试过的东西似乎难以抗拒,因为我已经为此工作了几个小时。我在网上搜索过,几乎没有发现任何相关内容。

我尝试过的大多数操作只会导致 ListView 显示时没有任何图像。

然后我尝试将以下文件作为资源导入到我的项目中。

Folders.png

即使我说我正在导入位图,资源查看器也会将此资源放入名为 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/

相关文章:

html - Sharepoint 中的顶部菜单导航

c++ - windows中宽字符和多字节字符串之间如何相互转换?

C++无法获得正确的字符串输入

c++ - 管理多个并发线程

java - C++ 中 Java 注释的最佳等效项是什么?

安卓 : How to set onClick event for Button in List item of ListView

c# - 为 ListView 设置 ItemSource 在 iOS 上会崩溃,但在 Android 上工作正常

c++ - Boost 错误:Boost.Filesystem V3 及更高版本需要 std::wstring 支持

c++ - 如何避免程序出现 windows "Don' t Answer"消息

android - 如何使用 ArrayAdapter 为 ListView 编写自定义过滤器