通过加载本地路径下图片文件显示到控件,并使用控件大小显示
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);
}