|
这是给那些不知道的朋友看的,
知道了的就不要看了,
看之前建议先看看关于打包方面的资料!
下面这段程序演示了如何内存中加载图片资源,当然,之前你必须先将图片解压到内存中!(此程序部分参照了kylinx写的gppGameLib2.3)
void LoadBmp(LPDIRECTDRAWSURFACE7 surface,LPBYTE FileBuffer,DWORD FileLen,int bwidth,int bheight)
{
LPVOID pvData=NULL;
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, FileLen);
pvData=GlobalLock(hGlobal);
memcpy(pvData,FileBuffer,FileLen);
GlobalUnlock(hGlobal);
LPSTREAM pStream = NULL;
LPPICTURE gpPicture=NULL;
CreateStreamOnHGlobal(hGlobal,true,&pStream);
OleLoadPicture(pStream,FileLen, false, IID_IPicture, (void**)&gpPicture);
long lWidth,lHeight;
gpPicture->get_Width(&lWidth);
gpPicture->get_Height(&lHeight);
HDC hdc;
surface->GetDC(&hdc);
RECT rect={0,0,bwidth,bheight};
gpPicture->Render(hdc,0,0,bwidth,bheight,0,lHeight,lWidth,-lHeight,&rect);
surface->ReleaseDC(hdc);
GlobalFree(hGlobal);
pStream->Release();
}
另外,如果谁有更好的方法麻烦告诉我啊!
|
|