MFC VC++:Picture Control 无法加载 PNG 图像

Posted

技术标签:

【中文标题】MFC VC++:Picture Control 无法加载 PNG 图像【英文标题】:MFC VC++ : Picture Control fails to load PNG images 【发布时间】:2013-05-30 10:07:40 【问题描述】:

我使用以下代码将 PNG 图像加载到图片控件中。

....
LPSTREAM pStrmDefImg = TurnStream(MAKEINTRESOURCE(resourceID),_T("PNG"));
if(pStrmDefImg !=  NULL) 
    CImage img;
    img.Load(pStrmDefImg);    // Load from stream
    pictureCtrl.SetBitmap(img);
    pStrmDefImg->Release();

.....

LPSTREAM TurnStream(LPCTSTR Resource, LPCTSTR Type)

    char* pData = 0;
    DWORD dwSize = 0;
    int nRes = GetResource(Resource,Type,&pData,&dwSize);              
    LPSTREAM pStream;
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwSize+1);
    void *pImageData = GlobalLock(hGlobal);
    memcpy(pImageData, pData, dwSize);
    HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStream);
    return pStream;

您在此代码中发现任何问题吗?没有报错,但是图片控件不显示加载的图片。

【问题讨论】:

此代码有效。我必须更改图片控件属性中的type。我将它设置为Bitmap,它会显示 png 图像。 嘿,你能说说GetResource(Resource,Type,&pData,&dwSize);函数吗? 【参考方案1】:

PictureCtrl 属性窗口中将type 属性设置为Bitmap

【讨论】:

以上是关于MFC VC++:Picture Control 无法加载 PNG 图像的主要内容,如果未能解决你的问题,请参考以下文章

MFC中通过Picture control控件显示选中的图片

VS2010-MFC(常用控件:图片控件Picture Control)

MFC(我用的VS2008)中怎样改变picture控件(picture control)的边框样式???我要通过代码设置的

[ MFC ] 对话框动态控件的创建 在Picture Control控件上显示图片 [大三TJB_708]

在MFC中,如何读取外部的位图文件,让它显示在图片控件(Picture Control)中?

知乎上有一个问题“在mfc框架中,有上面方法能直接将opencv2.0库中的Mat格式图片传递到Picture Control”中显示?