MFC(三)显示图片

来源:互联网 发布:网络成瘾临床诊断标准 编辑:程序博客网 时间:2024/04/29 08:13
1.在MFC控件中选择静态文本控件,放在合适位置。



2.在静态文本控件右键,选择属性。
3.在属性中:
    1)设置ID为IDC_STATIC_VIDEO;标题:显示;勾选:可见、组。

2)设置样式:排列文本为居中。


4.添加代码
1)图片显示
需:
1)提前定义    CDC *pDC;
2)在 BOOL CVPlayDlg::OnInitDialog()添加代码:     
                     // TODO: Add extra initialization here
     pDC = GetDlgItem(IDC_STATIC_VIDEO)->GetDC();
3)
//本地图片显示bool CVPlayDlg::ShowJpg(CDC *pDC, CString strPath, int nJpecDataSize, int x, int y){IStream *pStm;   CFileStatus fstatus;   ULONGLONG cb; CFile file;     // 打开文件并检测文件的有效性       if (!file.Open(strPath,CFile::modeRead))       {           return FALSE;       }       if (!file.GetStatus(strPath,fstatus))       {           return FALSE;       }       if ((cb =fstatus.m_size)<=0)       {           return FALSE;       }         // 根据文件大小分配内存空间,记得释放内存       HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, (unsigned int)cb);          if (hGlobal== NULL)         {   GlobalFree(hGlobal) ;          return FALSE;        }          // 锁定刚才分配的内存空间        LPVOID pvData = NULL;          pvData = GlobalLock(hGlobal);        if (pvData == NULL)          {                GlobalFree(hGlobal);  // 记得释放内存              return FALSE;        }           // 将文件放到流中          file.Read(pvData,(unsigned int)cb);          GlobalUnlock(hGlobal);          CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);           // 从流中加载图片       //显示JPEG和GIF格式的图片,GIF只能显示一帧,还不能显示动画,  //要显示动画GIF请使用ACTIVE控//件。  IPicture *pPic;  //load image from file stream  //bool result=OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic);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;   //get image height and width  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);   //use render function display image  if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))   {  pPic->Release(); GlobalFree(hGlobal); return false;  }  pPic->Release(); GlobalFree(hGlobal) ;}   else{GlobalFree(hGlobal); return false; }      return true;  }

4)
      
0 0
原创粉丝点击