有没有办法在不使用GDI+的情况下从我的资源加载.png
Is there any way to load a .png from my resources without using GDI+?
我正在尝试加载存储在项目资源中的.png,以便将其设置为图片控件,但我不太清楚为什么。我做了一些研究,似乎通常的 LoadImage() 调用并不真正支持.png。
但是,如果我能绕过它,我真的不想将其转换为位图。
到目前为止,我只找到了有关如何使用 GDI+ 或非常古老的 win32-api 代码执行此操作的资源。
有没有办法按照今天的标准原生加载.png文件?
执行此操作的"新"方法是 Direct2D 和 WIC,这在 Windows 映像组件和 Direct2D 图像查看器 Win32 示例中进行了演示。
但是,如果应用程序的其余部分是基本控件,则 Direct2D 是矫枉过正。 图像必须在某个时候转换为位图才能显示(无论是在 GPU 中还是在内存中),GDI+ 适合此用例。
如果这些资源是图标或其他一些小文件(<2mp),我建议将资源嵌入为位图。 您可以将资产管线保留为 PNG,只需添加一个预构建步骤即可将 PNG 转换为预乘的 BGRA 位图并使用 LoadResource
. 有预先构建的工具可以满足此需求。
相关文章:
- 这个c++代码是如何在没有定义函数的情况下运行的
- 在没有默认构造函数的情况下创建的派生对象
- 在这种情况下我应该使用哪种设计模式
- 为什么在这种情况下我需要 .template
- 为什么在以下情况下我需要使用 std::d ecay?
- 虚拟继承情况下类的意外大小
- 如何迭代在不知道其大小的情况下读取的字符串?
- 为什么在这种特殊情况下我不需要模板参数?
- C 17中的新:默认情况下匹配的模板模板
- 创建一个可以在没有实验的情况下变形的管道::任何
- 在没有参数的情况下调用的函数不会给出错误
- OpenCV是在没有CUDA视频解码支持的情况下建造的
- 确定函数是否是在没有设置全局变量的情况下调用的
- 如何消除只在启用优化的情况下出现的错误
- 这个错误一般意味着什么?以及在这种情况下我如何解决它
- 在这种情况下我该如何使用开关
- QtC++编译是在没有显示程序的情况下完成的
- 为什么成员变量会更改,但在这种情况下对象的地址保持不变?
- 在 std::vector 上运行的多个线程:在这种情况下我需要锁定吗?
- 为什么在这种情况下我的复制构造函数只被调用两次?