gpt4 book ai didi

c++ - 如何将png资源加载到对话框上的图片控件中?

转载 作者:IT老高 更新时间:2023-10-28 23:13:54 26 4
gpt4 key购买 nike

我在 OnInitDialog() 上尝试了以下代码,但没有显示任何内容。

m_staticLogo.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(IDB_LOGO)));

其中m_staticLogo是静态图片控件,IDB_LOGO是png文件的资源ID。

最佳答案

如您所见,::LoadBitmap (以及较新的 ::LoadImage )仅处理 .bmp s。到目前为止,最简单的解决方案是将您的图像转换为 .bmp .

如果图像具有透明度,则可以将其转换为 32 位 ARGB 位图(这里有一个名为 AlphaConv 的工具可以进行转换)。然后使用 CImage 加载图像类(class) LoadFromResource方法。通过CImagem_staticLogo.SetBitmap() .

但如果你真的需要它是 .png ,是可以的。

方法1(更简单的方法):加载.png来自使用 CImage::Load 的文件.通过CImagem_staticLogo.SetBitmap() .

方法2(更难的方法):加载.png从资源加载资源到 COM IStream并使用 CImage::Load . (注意:CImage::LoadFromResource 看起来很诱人,但不适用于 .png 图形)。将资源放入 COM IStream ,见 this Codeproject article .请注意本文适用于 Gdiplus::Bitmap但关键部分是如何创建 IStream , 你应该能够适应 CImage .最后,通过CImagem_staticLogo.SetBitmap() .

编辑:更新为使用 CImage ,这比 Gdiplus::Bitmap 更容易.

关于c++ - 如何将png资源加载到对话框上的图片控件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com