当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
C语言技巧:VC实现JPG图片加载
发布时间:2010/1/8 22:31:48 来源:城市学习网 编辑:海蓝

  在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; [NextPage]

  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