当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
使用VC实现JPG图片加载
发布时间:2010/5/10 11:04:14 来源:城市学习网 编辑:ziteng
  在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!");
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved