VC实现JPG图片加载
来源:优易学  2011-12-10 16:56:23   【优易学:中国教育考试门户网】   资料下载   IT书店

  在OnDraw()函数中添加如下的代码,并在工程目录下放入test.jpg的图片。

  IPicture *pPic;

  IStream *pStm;

  CFileStatus fstatus;

  CFile file;

  LONG cb;

  if   (file.Open("test.jpg",CFile::modeRead)&&file.GetStatus("test.jpg", fstatus)&&   ((cb   =   fstatus.m_size)   !=   -1))

  {

  HGLOBAL   hGlobal   =   GlobalAlloc(GMEM_MOVEABLE,   cb);

  LPVOID pvData = NULL;

  if   (hGlobal   !=   NULL)

  {

  if   ((pvData   =   GlobalLock(hGlobal))   !=   NULL)

  {

  file.ReadHuge(pvData,   cb);

  GlobalUnlock(hGlobal);

  CreateStreamOnHGlobal(hGlobal,   TRUE,   &pStm);

  if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))

  {

  OLE_XSIZE_HIMETRIC hmWidth;

  OLE_YSIZE_HIMETRIC hmHeight;

  pPic->get_Width(&hmWidth);

  pPic->get_Height(&hmHeight);

  double   fX,fY;

 CRect rect;

  GetClientRect(rect);

  fX=rect.Width();

  fY=rect.Height();

  //fX   =   (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);

  //fY   =   (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);

  if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL))) AfxMessageBox("Failed   To   Render   The   picture!");

  pPic->Release();

  }

  else

  AfxMessageBox("Error   Loading   Picture   From   Stream!");

  }

  }

  }

  else

  AfxMessageBox("Can't   Open   Image   File!");

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训