程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 讀取磁盤圖片文件並顯示

讀取磁盤圖片文件並顯示

編輯:.NET實例教程

//參數 圖片路徑,窗口句柄,圖片寬,高
HRESULT ShowPic(char *lpstrFile,HWND hWnd,int nScrWidth,int nScrHeight)
{
 HDC hDC_Temp=GetDC(hWnd);
 
 IPicture *pPic;
 IStream *pStm;
 
 BOOL bResult;
 
 HANDLE hFile=NULL;
 DWord dwFileSize,dwByteRead;
 
 //打開硬盤中的圖形文件
 hFile=CreateFile(lpstrFile,GENERIC_READ,
  FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
 
 if (hFile!=INVALID_HANDLE_VALUE)
 {
  dwFileSize=GetFileSize(hFile,NULL);//獲取文件字節數
  
  if (dwFileSize==0xFFFFFFFF)
   return E_FAIL;
 }
 else
 {
  return E_FAIL;
 }
 
 
 //分配全局存儲空間
 HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
 LPVOID pvData = NULL;
 
 if (hGlobal == NULL)
  return E_FAIL;
 
 if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配內存塊
  return E_FAIL;
 
 ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件讀入內存緩沖區
 
 GlobalUnlock(hGlobal);
 
 CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
 
 //裝入圖形文件
 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
 
 if(FAILED(bResult))
  return E_FAIL;
 
 OLE_XSIZE_HIMETRIC hmWidth;//圖片的真實寬度
 OLE_YSIZE_HIMETRIC hmHeight;//圖片的真實高度
 pPic->get_Width(&hmWidth);
 pPic->get_Height(&hmHeight);
 
 
 //將圖形輸出到屏幕上(有點像BitBlt)
 bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,
  0,hmHeight,hmWidth,-hmHeight,NULL);
 
 pPic->Release();
 
 CloseHandle(hFile);//關閉打開的文件
 
 if (SUCCEEDED(bResult))
 {
  return S_OK;
 }
 else
 {
  return E_FAIL;
 }
}  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved