天天看点

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