注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

回首望星辰

See you in the next world

 
 
 

日志

 
 

WinCE下加载流式JPG图片  

2009-04-21 16:50:19|  分类: 图形图像开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
采用IPicture接口的实现(wince不支持OleLoadPicture接口)
-----------------------------------------------------------------------
IPicture *m_picture;
OLE_XSIZE_HIMETRIC m_width;
OLE_YSIZE_HIMETRIC m_height;

CString m_filename("D:\\009.jpg");//文件名

CFile m_file(m_filename,CFile::modeRead );

//获取文件长度
DWORD m_filelen = m_file.GetLength();

//在堆上分配空间
HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE,m_filelen);

LPVOID pvdata = NULL;
//锁定堆空间,获取指向堆空间的指针
pvdata = GlobalLock(m_hglobal);

//将文件数据读区到堆中
m_file.ReadHuge(pvdata,m_filelen);

IStream*  m_stream;

GlobalUnlock(m_hglobal);

//在堆中创建流对象
CreateStreamOnHGlobal(m_hglobal,TRUE,&m_stream);

//利用流加载图像
OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture);

m_picture->get_Width(&m_width);
m_picture->get_Height(&m_height);   

CDC* dc = GetDC();

m_IsShow = TRUE;
CRect rect;
GetClientRect(rect);
SetScrollRange(SB_VERT,0,(int)(m_height/26.45)-rect.Height());
SetScrollRange(SB_HORZ,0,(int)(m_width/26.45)-rect.Width());

m_picture->Render(*dc,1,50,(int)(m_width/26.45),(int)(m_height/26.45),0,m_height,m_width,-m_height,NULL);


采用IImage接口的实现
-------------------------------------------------------------------
HBITMAP CImageLoader::loadImageFile( CString &strFileName)
{
IImagingFactory *pImgFactory =NULL;
    IImage *pImage =NULL;
    CoInitializeEx(NULL,COINIT_MULTITHREADED);
HBITMAP hResult =0; 
    if  (SUCCEEDED(CoCreateInstance(CLSID_ImagingFactory,
                                    NULL,
                                    CLSCTX_INPROC_SERVER,
                                    IID_IImagingFactory,
                                    (void  **)&pImgFactory)))
{
    ImageInfo imageInfo;
        if(SUCCEEDED(pImgFactory->CreateImageFromFile(strFileName,&pImage))
    && SUCCEEDED(pImage->GetImageInfo(&imageInfo)))
        {
  CWindowDC dc(0);
  CDC dcBitmap;
  dcBitmap.CreateCompatibleDC(&dc);
  hResult =CreateCompatibleBitmap(dc.GetSafeHdc(),imageInfo.Width,imageInfo.Height);
  if(hResult){
    HGDIOBJ  hOldBitmap  =  dcBitmap.SelectObject(hResult);
                pImage->Draw(dcBitmap.GetSafeHdc(),CRect(0,0,imageInfo.Width,imageInfo.Height),NULL);
    dcBitmap.SelectObject(hOldBitmap);
   
  }
  pImage->Release();
        }

        pImgFactory->Release(); 
CoUninitialize();
  return hResult;
}
     
}
  评论这张
 
阅读(621)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017