游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2570|回复: 1

从内存中载入图片的例程

[复制链接]

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2004-5-28 15:26:00 | 显示全部楼层 |阅读模式
这是给那些不知道的朋友看的,
知道了的就不要看了,
看之前建议先看看关于打包方面的资料!

下面这段程序演示了如何内存中加载图片资源,当然,之前你必须先将图片解压到内存中!(此程序部分参照了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();
}

另外,如果谁有更好的方法麻烦告诉我啊!

17

主题

24

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2004-5-31 21:30:00 | 显示全部楼层

Re:从内存中载入图片的例程

sdk中
hBitmap = LoadBitmap (hInstance, TEXT ("Bricks")) ;
hdc = GetDC(hwnd) ;
hdcMem = CreateCompatibleDC (hdc) ;
SelectObject (hdcMem, hBitmap) ;

BitBlt (hdc, 0, 0, cxClient,cyClient, hdcMem, cxSource, cySource, SRCCOPY) ;


DeleteObject(hBitmap);
DeleteDC (hdcMem) ;
ReleseDC (hdc);


哈哈搞定
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-1 13:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表