具有PNG / Alpha通道图像的ImageList

时间:2014-09-22 23:13:28

标签: c++ windows listview mfc imagelist

我不能为我的生活弄清楚如何使用带alpha通道的PNG文件创建ImageList控件。我想将它用作ListView控件中的小图像。

描述我尝试过的东西似乎势不可挡,因为我已经工作了好几个小时了。我在网上搜索过,几乎找不到任何内容。

我尝试过的大多数事情都会导致列表视图无任何图像显示。

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

Folders.png

即使我说我正在导入Bitmap,资源查看器也会将此资源放入名为PNG的部分。当前版本的Visual Studio似乎完全被PNG文件困惑。

但是现在我甚至无法将其加载到Visual Studio中。我收到以下错误。此错误似乎来自资源编译器。

  

错误RC2170:位图res \ Folders.png不是3.00格式。

我使用IconWorkshop重新创建了图像 - 我非常确定我的图像是当前格式的。对于Visual Studio来说可能太过分了。

有人知道如何在ImageList / ListView中使用PNG / alpha通道图像吗?

1 个答案:

答案 0 :(得分:0)

正如xMRi建议的那样,我能够通过将我的PNG图像保存为32位/ alpha通道BMP文件来完成这项工作。

对加载的资源的支持有一些限制。例如,CBitmap::GetBitmapDimension返回一个空矩形。在Visual Studio中不存在对alpha通道和高质量位图的支持。

尽管如此,如果我硬编码图像大小,它确实有效。我的ListView控件正确选中项目时突出显示图像而不突出显示透明区域。因此alpha通道被正确识别。