有没有办法在不使用GDI+的情况下从我的资源加载.png

Is there any way to load a .png from my resources without using GDI+?

本文关键字:情况下 我的 资源 png 加载 GDI+ 有没有      更新时间:2023-10-16

我正在尝试加载存储在项目资源中的.png,以便将其设置为图片控件,但我不太清楚为什么。我做了一些研究,似乎通常的 LoadImage() 调用并不真正支持.png。

但是,如果我能绕过它,我真的不想将其转换为位图。

到目前为止,我只找到了有关如何使用 GDI+ 或非常古老的 win32-api 代码执行此操作的资源。

有没有办法按照今天的标准原生加载.png文件?

执行此操作的"新"方法是 Direct2D 和 WIC,这在 Windows 映像组件和 Direct2D 图像查看器 Win32 示例中进行了演示。

但是,如果应用程序的其余部分是基本控件,则 Direct2D 是矫枉过正。 图像必须在某个时候转换为位图才能显示(无论是在 GPU 中还是在内存中),GDI+ 适合此用例。

如果这些资源是图标或其他一些小文件(<2mp),我建议将资源嵌入为位图。 您可以将资产管线保留为 PNG,只需添加一个预构建步骤即可将 PNG 转换为预乘的 BGRA 位图并使用 LoadResource . 有预先构建的工具可以满足此需求。