天天看點

MFC_Static加載圖檔

法一:加載bmp

#define HBMP(filepath,width,hight) (HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,hight,LR_LOADFROMFILE|LR_CREATEDIBSECTION)

	//寬高設定,應該按照控件大小取設定
	CRect rect;
	m_photoBmp.GetWindowRect(rect);

	//靜态控價設定bitmap
	m_photoBmp.ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
	m_photoBmp.SetBitmap(HBMP(photoFileName, rect.Width(), rect.Height()));
           

或者

HBITMAP hbitmap;
	CRect rect;
	m_photoBmp.GetWindowRect(&rect);
	hbitmap = (HBITMAP)::LoadImage(NULL, photoFileName, IMAGE_BITMAP, 96, 128, LR_LOADFROMFILE | LR_CREATEDIBSECTION);//| LR_DEFAULTSIZE
	m_photoBmp.ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
	m_photoBmp.SetBitmap((HBITMAP)hbitmap);
           

法二:加載jpg

CImage  image;
	if (!PathFileExists(photoFileName))  //判斷此路徑是否存在 
		return;

	//根據路徑載入圖檔
	image.Load(photoFileName);

	//擷取Picture Control控件的大小
	m_photoBmp.GetWindowRect(&rect);
	//将客戶區選中到控件表示的矩形區域内
	ScreenToClient(&rect);
	//視窗移動到控件表示的區域,使控件的大小等于圖檔的大小
	m_photoBmp.MoveWindow(rect.left, rect.top, rect.Width(), rect.Height(), TRUE);
	CWnd *pWnd = NULL;///使用這種方法擷取控件句柄,可以動态擷取不同控件的句柄,尤其在批量控件設定時很友善
	pWnd = GetDlgItem(IDC_PHOTO_STATIC);//擷取控件句柄
	pWnd->GetClientRect(&rect);//擷取句柄指向控件區域的大小
	CDC *pDC = NULL;
	pDC = pWnd->GetDC();//擷取picture的DC

	image.Draw(pDC->m_hDC, rect);//将圖檔繪制到picture表示的區域内
	ReleaseDC(pDC);
           
MFC