MFC处理jpg等格式图片 Cpicture(二)
2013-08-20 03:06
309 查看
MFC处理jpg等格式图片(二)
CPicture 类简介:
大概流程:通过IPicture接口实现图片的各种操作
1
IPicture 实现各种图片加载三部曲
1定义两个类指针
IStream *pIStream;//创建一个IStream接口指针,用来保存图片流
IPicture *pIPicture;//创建一个IPicture接口指针,表示图片对象
2 OleLoadPicture()从流中加载数据构成IPicture对象(将数据流合成IPicture对象)
OleLoadPicture(pIStream,0, false, IID_IPicture, (LPVOID*)&(pIPicture));//用OleLoadPicture获得IPicture接口指针
3展示你的劳动成果 hDC为设备上下文
pIPicture->Render(hDC,0,0,theRect.Width(),theRect.Height(),0,hmHeight,hmWidth,-hmHeight,NULL);//在指定的DC上绘出图片
2 关于流大家感到不是很客观 :大家可能对一张具体的图片 或文件更加直接
所以提供这么多接口供选择
//Load frm various sosurces
BOOL Load(UINT nIDRes); //根据加载的图片ID(一般为位图)
BOOL Load(LPCTSTR pszPathName) //图片路径例如”D://1.jgp”
BOOL Load(CFile& file); //一个文件类(已经与一个文件关联了)
BOOL Load(CArchive& ar); //他的对象可以理解为二进制流
BOOL Load(IStream* pstm); //流
BOOL Load(char *pBuffer, int nSize); //文本文件字符数据
所以封装好流 我们提供你一个文件路径……你就可以完成图片的加载显示而不用去理会那流了
现在出场的是IPicture
我们主要是封装他的
CComQIPtr<IPicture>m_spIPicture; // ATL smart pointer to IPicture
看到这句代码。可能有所不理解 你就理解为IPicture * m_spIPicture
就行了
至于具体:他其实是一个智能指针:百度
具体代码看
1如何将CFile CArchive转化为流的
主要流程是:
CFile-> CArchive-> CArchiveStream-> IStream
CArchivear(&file, CArchive::load | CArchive::bNoFlushOnDelete);
CArchiveStreamarcstream(&ar);
Load((IStream*)&arcstream);
2如何将char*转化为流的呢?
HGLOBALhGlobal = GlobalAlloc(GMEM_MOVEABLE, nSize); 给图片分配全局内存
void*pData = GlobalLock(hGlobal);锁定内存
GlobalUnlock(hGlobal);解锁内存
CreateStreamOnHGlobal(hGlobal, TRUE, &pStream);用全局内存初使化IStream接口指针
总结:所以Cpicture 主要封装了Istream流的产生
关于Cpicture源代码:
点击
CSDN CPicture类源代码
CPicture 类简介:
大概流程:通过IPicture接口实现图片的各种操作
1
IPicture 实现各种图片加载三部曲
1定义两个类指针
IStream *pIStream;//创建一个IStream接口指针,用来保存图片流
IPicture *pIPicture;//创建一个IPicture接口指针,表示图片对象
2 OleLoadPicture()从流中加载数据构成IPicture对象(将数据流合成IPicture对象)
OleLoadPicture(pIStream,0, false, IID_IPicture, (LPVOID*)&(pIPicture));//用OleLoadPicture获得IPicture接口指针
3展示你的劳动成果 hDC为设备上下文
pIPicture->Render(hDC,0,0,theRect.Width(),theRect.Height(),0,hmHeight,hmWidth,-hmHeight,NULL);//在指定的DC上绘出图片
2 关于流大家感到不是很客观 :大家可能对一张具体的图片 或文件更加直接
所以提供这么多接口供选择
//Load frm various sosurces
BOOL Load(UINT nIDRes); //根据加载的图片ID(一般为位图)
BOOL Load(LPCTSTR pszPathName) //图片路径例如”D://1.jgp”
BOOL Load(CFile& file); //一个文件类(已经与一个文件关联了)
BOOL Load(CArchive& ar); //他的对象可以理解为二进制流
BOOL Load(IStream* pstm); //流
BOOL Load(char *pBuffer, int nSize); //文本文件字符数据
所以封装好流 我们提供你一个文件路径……你就可以完成图片的加载显示而不用去理会那流了
现在出场的是IPicture
我们主要是封装他的
CComQIPtr<IPicture>m_spIPicture; // ATL smart pointer to IPicture
看到这句代码。可能有所不理解 你就理解为IPicture * m_spIPicture
就行了
至于具体:他其实是一个智能指针:百度
具体代码看
1如何将CFile CArchive转化为流的
主要流程是:
CFile-> CArchive-> CArchiveStream-> IStream
CArchivear(&file, CArchive::load | CArchive::bNoFlushOnDelete);
CArchiveStreamarcstream(&ar);
Load((IStream*)&arcstream);
2如何将char*转化为流的呢?
HGLOBALhGlobal = GlobalAlloc(GMEM_MOVEABLE, nSize); 给图片分配全局内存
void*pData = GlobalLock(hGlobal);锁定内存
GlobalUnlock(hGlobal);解锁内存
CreateStreamOnHGlobal(hGlobal, TRUE, &pStream);用全局内存初使化IStream接口指针
总结:所以Cpicture 主要封装了Istream流的产生
关于Cpicture源代码:
点击
CSDN CPicture类源代码
相关文章推荐
- MFC处理jpg等格式图片 IPicture接口(一)
- MFC显示JPG格式的图片(2-1)
- 用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片
- PS处理完图片后为什么保存不了jpg格式?
- MFC显示JPG格式的图片(2-2)
- 用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片
- 如何处理EDIUS打不开jpg格式的图片的问题
- 在ORACLE中处理非JPG格式图片
- MFC PICTURE控件加载JPG图片
- MFC实现picture控件显示jpg图片文件
- 用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片
- VC2005中将Picture控件显示图片保存为BMP,JPG等格式
- MFC关于JPG图片显示处理方面记录
- 转载:用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片
- 用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片
- Picture控件显示图片保存为BMP,JPG等格式
- 用API OleLoadPicture来加载JPG、GIF格式的图片
- Ubuntu下安装php5-gd库,支持jpg、png、gif等格式图片处理
- MFC picture control 显示不同格式图片
- 用API OleLoadPicture通过IStream来加载JPG、GIF格式的图片