jpg资源文件怎样才能显示成真彩色?
ljooo 2008-06-23 03:44:32 有几张图片是是不想给别人替换掉,而且不像处理图片不存在(被人删掉)等错误,所以想做成资源文件。大小都是1680*1050,不使用bmp。
我照网上的做法,只能显示成256色的。严重失真。怎样才能显示成真彩色的呢?一定要1,JPG,2,资源。
下面是代码:
Image* GetImage()
{
Image *pRetImg = NULL;
HGLOBAL hGlobal = NULL;
HRSRC hSource = NULL;
LPVOID lpVoid = NULL;
int nSize = 0;
hSource = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_JPG1), L"JPG");//IDR_JPG1资源ID
if(hSource == NULL)
return pRetImg;
hGlobal = LoadResource(AfxGetResourceHandle(), hSource);
if(hGlobal == NULL)
{
FreeResource(hGlobal); return pRetImg;
}
lpVoid = LockResource(hGlobal);
if(lpVoid == NULL)
goto Exit;
nSize = (UINT)SizeofResource(AfxGetResourceHandle(), hSource);
HGLOBAL hGlobal2 = GlobalAlloc(GMEM_MOVEABLE, nSize);
if(hGlobal2 == NULL)
{
goto Exit;
}
void* pData = GlobalLock(hGlobal2);
memcpy(pData, (void *)hGlobal, nSize);
GlobalUnlock(hGlobal2);
IStream* pStream = NULL;
if(CreateStreamOnHGlobal(hGlobal2, TRUE, &pStream) == S_OK)
{
pRetImg = Image::FromStream(pStream, FALSE);
pStream->Release();
}
FreeResource(hGlobal2);
Exit:
UnlockResource(hGlobal); FreeResource(hGlobal);
return pRetImg;
}
OnPaint 里
Image *imageBack;
imageBack=GetImage();
graphics->DrawImage(imageBack, Rect(0, 0, imageBack->GetWidth(), imageBack->GetHeight()) ,0, 0,
imageBack->GetWidth(), imageBack->GetHeight(), UnitPixel);