把jpg文件读到内存后,用二进制读进去的,放到一个char* 内存里, 然后如何把这个 char* 内存 赋值给一个 HBITMAP
把jpg文件读到内存后,用二进制读进去的,放到一个char* 内存里, 然后怎么把这个 char* 内存 赋值给一个 HBITMAP
把jpg文件读到内存后,用二进制读进去的,放到一个char* 内存里, 然后怎么把这个 char* 内存 赋值给一个 HBITMAP
或者放到 CBitmap 里也可以, 项目要求用打印机打印出来
------解决思路----------------------
那么直接读取为CBitmap行不行
http://blog.****.net/huangxy10/article/details/7089093
------解决思路----------------------
MFC里面有个CImage类
#include <atlimage.h>
CImage img;
img.Load(L"d:\\1.jpg");
HBITMAP hBitmap = img.Detach();
就可以了。
从char*中读取也可以,不过麻烦点,需要用CreateStreamOnHGlobal创建一个IStream,
然后用IStream::Read()把char*读进去,然后传递给CImage::Load()进行读取
------解决思路----------------------
CreateDIBSection得到HBITMAP,得到pbits,拷贝一下就行了
------解决思路----------------------
这个问题不是很复杂啊,楼主我给你段代码吧,如果你是在windows下开发直接就能用
如果你非要Bitmap的话,参照3楼的说法改改就行了
------解决思路----------------------
学习了。
是不是少了句GlobalUnlock(hMem);?
------解决思路----------------------
你没解码,读进去也不能显示为图像。
你必须用 libjpeg解码,然后得到位图信息,将此位图信息转换为os图形层认识的内存位图格式就可以显示了。
把jpg文件读到内存后,用二进制读进去的,放到一个char* 内存里, 然后怎么把这个 char* 内存 赋值给一个 HBITMAP
或者放到 CBitmap 里也可以, 项目要求用打印机打印出来
------解决思路----------------------
那么直接读取为CBitmap行不行
http://blog.****.net/huangxy10/article/details/7089093
------解决思路----------------------
MFC里面有个CImage类
#include <atlimage.h>
CImage img;
img.Load(L"d:\\1.jpg");
HBITMAP hBitmap = img.Detach();
就可以了。
从char*中读取也可以,不过麻烦点,需要用CreateStreamOnHGlobal创建一个IStream,
然后用IStream::Read()把char*读进去,然后传递给CImage::Load()进行读取
------解决思路----------------------
CreateDIBSection得到HBITMAP,得到pbits,拷贝一下就行了
------解决思路----------------------
这个问题不是很复杂啊,楼主我给你段代码吧,如果你是在windows下开发直接就能用
void DrawPic(CDC *pDC,char *buf,int len)
{
//内存数据转换成流
HGLOBAL hMem=GlobalAlloc(GMEM_FIXED,len);
BYTE* pMem=(BYTE*)GlobalLock(hMem);
memcpy(pMem,buf,len);
IStream* pStream;
HRESULT hr=CreateStreamOnHGlobal(pMem,FALSE,&pStream);
//画图
CImage img;
img.Load(pStream);
img.Draw(pDC->GetSafeHdc(),CPoint(0,0));
//清理
img.Destroy();
pStream->Release();
GlobalFree(hMem);
}
如果你非要Bitmap的话,参照3楼的说法改改就行了
------解决思路----------------------
学习了。
是不是少了句GlobalUnlock(hMem);?
------解决思路----------------------
你没解码,读进去也不能显示为图像。
你必须用 libjpeg解码,然后得到位图信息,将此位图信息转换为os图形层认识的内存位图格式就可以显示了。