MFC Picture控件显示图片并适应控件大小

通过加载本地路径下图片文件显示到控件,并使用控件大小显示

class CMyDlg
{
public:
	CMyDlg();
	void ShowImageToCtrl(CDC* cdc);
	
	CImage m_image;
protected:
	afx_msg void OnPaint();
}
CMyDlg::CMyDlg()
{
	m_image.Load("./image.png");//放到初始化中加载一次即可
}

void CMyDlg::OnPaint()
{
	ShowImageToCtrl(NULL);
}

void CMyDlg::ShowImageToCtrl(CDC* cdc)
{
	

	int cx, cy;
	CRect   rect;
	//获取图片的宽 高
	cx = m_image.GetWidth();
	cy = m_image.GetHeight();

	CWnd* pWnd = NULL;
	pWnd = GetDlgItem(IDC_STATIC_PIC);//获取控件句柄		
	pWnd->GetClientRect(&rect); //获取Picture Control控件的客户区

	CDC* pDC = NULL;
	pDC = pWnd->GetDC();//获取picture control的DC  

	int oldMode = SetStretchBltMode(pDC->m_hDC, STRETCH_HALFTONE);//设置指定设备环境中的位图拉伸模式		
	m_image.StretchBlt(pDC->m_hDC, rect, SRCCOPY);//从源矩形中复制一个位图到目标矩形,按目标设备设置的模式进行图像的拉伸或压缩
	SetStretchBltMode(pDC->m_hDC, oldMode);

	// 创建新字体
	CFont font;
	font.CreateFont(40, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("微软雅黑"));

	// 在设备上选择新字体
	CFont* pOldFont = pDC->SelectObject(&font);

	// 在图片上绘制文本
	CString strText = "Hello, World!";
	pDC->SetBkMode(TRANSPARENT);
	pDC->SetTextColor(RGB(255, 0, 0)); // 设置文本颜色为红色
	pDC->SetTextAlign(TA_CENTER); // 设置文本对齐方式为居中
	//pDC->TextOut(rect.left + rect.Width() / 2, rect.top + rect.Height() / 2, strText); // 绘制文本
	pDC->TextOut(rect.left + 100, rect.top + rect.Height() - 60, strText);
	pDC->SelectObject(pOldFont);
	ReleaseDC(pDC);
}
  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值