15,979
社区成员
发帖
与我相关
我的任务
分享
using namespace Gdiplus;
IStream* pStmBmp = NULL;
Image* imImage = NULL;
BYTE* pbyBmp = NULL;
Status stat;
CLSID clImageClsid;
HGLOBAL hMemImage = NULL;
IStream* pStmImage = NULL;
LARGE_INTEGER liBegin = {0};
HGLOBAL hMemBmp = NULL;
DWORD dwBMPDataSize = 0;
BYTE* pbyImage = 0;
BITMAPFILEHEADER bmi;
BITMAPINFOHEADER bfl;
DWORD dwHeadSize = 0;
LPBYTE pDIBBmpData = NULL;
HBITMAP hRet = NULL;
hMemBmp = GlobalAlloc(GMEM_FIXED, nLen);
if (NULL == hMemBmp)
goto Error;
if (S_OK != CreateStreamOnHGlobal(hMemBmp,FALSE,&pStmBmp))
goto Error;
pbyBmp = (BYTE*)GlobalLock(hMemBmp);
if (NULL == pbyBmp)
goto Error;
memcpy(pbyBmp,pbyMem,nLen);
imImage = Gdiplus::Image::FromStream(pStmBmp, FALSE);
CBitmap bitmapTemp, *pOldBitmap;
CDC* pDC = GetDC();
CDC* pMemDC = new CDC;
bitmapTemp.CreateCompatibleBitmap(pDC, nWidth, nHight);//你图片的长宽
pMemDC->CreateCompatibleDC(pDC);
pOldBitmap = pMemDC->SelectObject(&bitmapTemp);
//在pMemDC上绘制图片,bitmapTemp就是你要的位图
pMemDC->SelectObject(pOldBitmap);
//释放内存
ReleaseDC(pMemDC);
delete pMemDC;