|
hi all,
i want to load a png image from resource in picture control.
how can i do this.
thanks.
|
|
|
|
|
|
#include "atlimage.h"
Image* m_pImage;
char *pStr = strTempIMGPath.GetBuffer(0);
int size = MultiByteToWideChar(GetACP(), 0, pStr, -1, NULL, 0);
MultiByteToWideChar(GetACP(), 0, pStr, -1, szFile, size);
strTempIMGPath.ReleaseBuffer();
if (m_pImage != NULL)
{
delete m_pImage;
m_pImage = NULL;
}
m_pImage = new Image(szFile, FALSE);
void CPNGButton::OnPaint()
{
CPaintDC dc(this);
Graphics graphics(dc.m_hDC);
if(m_pImage != NULL && (m_pImage->GetLastStatus() == Gdiplus::Status::Ok))
{
graphics.DrawImage(m_pImage, 0, 0, m_pImage->GetWidth(), m_pImage->GetHeight());
}
}
|
|
|
|
|
i want to load png file from Resources not with using file path of any selected file location.
|
|
|
|
|
I event tried to load the PNG file from the resource. But I failed.
If you find the way, please tell me.
|
|
|
|
|
LPCTSTR szResourceName =MAKEINTRESOURCE(IDB_PNG1);
LPCTSTR szResourceType=_T("PNG");
HMODULE hresModule=AfxGetResourceHandle();
HRSRC hPicture = FindResource(hresModule,szResourceName,szResourceType);
HGLOBAL hResData;
if (!hPicture || !(hResData = LoadResource(hresModule,hPicture)))
{
TRACE(_T("Load (resource): Error loading resource %s\n"),szResourceName);
return ;
};
DWORD dwSize = SizeofResource(hresModule,hPicture);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD,dwSize);
if (!hGlobal)
{
TRACE(_T("Load (resource): Error allocating memory\n"));
FreeResource(hResData);
return ;
};
char *pDest = reinterpret_cast<char *> (GlobalLock(hGlobal));
char *pSrc = reinterpret_cast<char *> (LockResource(hResData));
if (!pSrc || !pDest)
{
TRACE(_T("Load (resource): Error locking memory\n"));
GlobalFree(hGlobal);
FreeResource(hResData);
return ;
};
ULONG ulWritten=0;
ulWritten = 0;
CopyMemory(pDest,pSrc,dwSize);
HRESULT hr = ::CreateStreamOnHGlobal(hGlobal,FALSE,&pStream);
pStream->Write(pDest, dwSize, &ulWritten);
FreeResource(hResData);
GlobalUnlock(hGlobal);
Bitmap oBmp(pStream,0);
m_Image_ics.Load(pStream);
HDC memdc;
CRect rect;
this->GetClientRect(&rect);
HBITMAP hBmp;
oBmp.GetHBITMAP(0, &hBmp);
::SendMessage(png_bnr->GetSafeHwnd(),STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBmp);
|
|
|
|