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);
}

相关推荐

  1. MFC Picture显示图片适应

    2023-12-15 15:34:02       53 阅读
  2. WPF 使用Image显示图片

    2023-12-15 15:34:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 15:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 15:34:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 15:34:02       82 阅读
  4. Python语言-面向对象

    2023-12-15 15:34:02       91 阅读

热门阅读

  1. 小程序跳转按钮

    2023-12-15 15:34:02       45 阅读
  2. Linux---终端命令格式的组成

    2023-12-15 15:34:02       54 阅读
  3. Android Binder 调用栈

    2023-12-15 15:34:02       50 阅读
  4. 如何测试Nginx防盗链是否生效?

    2023-12-15 15:34:02       57 阅读
  5. 《Kotlin核心编程》笔记:面向表达式编程

    2023-12-15 15:34:02       57 阅读
  6. 浅谈EC防御技术

    2023-12-15 15:34:02       61 阅读
  7. 开发人员必用的Linux命令,建议收藏

    2023-12-15 15:34:02       67 阅读
  8. nvm动态管理node.js

    2023-12-15 15:34:02       69 阅读
  9. MySQL高可用实战(MHA)

    2023-12-15 15:34:02       45 阅读
  10. 自定义kafka客户端消费topic

    2023-12-15 15:34:02       64 阅读
  11. C++入门【5-C++ 常量】

    2023-12-15 15:34:02       49 阅读
  12. Canny边缘检测算法

    2023-12-15 15:34:02       67 阅读