(以VS2010为例)
1. 点击资源, 选择Dialog并点开, 在任意对话资源上右击, 选择"插入"Dialog", 如图1所示.
2. 插入后, 默认ID为IDD_DIALOG1, 可修改为自己相应的ID, 修改方式为:选择"属性"(可右击资源, 选择属性, 也可以选中资源后, 点右上的"属性")
3. 选择工具箱->Picture Control 控件, 并将Picture Control控件拖到对话框上.
拖上去后, 可做相关属性的修改. 如可以其ID修改为IDC_MY_PIC(下面的程序以将其ID修改为IDC_MY_PIC为例).
5.以下代码是控件跟随图片大小而改变
4. 在适当位置添加如下代码
CImage myImage;
myImage.Load(_T("d:\\lena.bmp"));
CRect rect;
CWnd *pWnd = GetDlgItem(IDC_MY_PIC);// (这是在此资源创建的类的内部, 若是在外部, 可先通过获得CMainFrame的指针, 再通过pMianFrame->GetDlgItem(IDCk_MY_PIC)来获取)
CDC *pDC = pWnd->GetDC();
pWnd->GetClientRect(&rect);
pDC->SetStretchBltMode(STRETCH_HALFTONE);
myImage.Draw(pDC->m_hDC, rect);
ReleaseDC(pDC);
myImage.Destroy();
5.以下代码是控件跟随图片大小而改变
int cx, cy;
CImage image;
CRect rect;
//根据路径载入图片
image.Load(_T("d:\\lena.bmp"));
//获取图片的宽 高度
cx = image.GetWidth();
cy = image.GetHeight();
//获取Picture Control控件的大小
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);
//将客户区选中到控件表示的矩形区域内
ScreenToClient(&rect);
//窗口移动到控件表示的区域
GetDlgItem(IDC_STATIC1)->MoveWindow(rect.left, rect.top, cx, cy, TRUE);
CWnd *pWnd = NULL;
pWnd = GetDlgItem(IDC_STATIC1);//获取控件句柄
ScreenToClient(&rect); //重新将客户区选中到控件表示的矩形区域内 如果此段代码在OnPaint中,则不需要这句话
pWnd->GetClientRect(&rect);//获取句柄指向控件区域的大小
CDC *pDc = NULL;
pDc = pWnd->GetDC();//获取picture的DC
image.Draw(pDc->m_hDC, rect);//将图片绘制到picture表示的区域内
ReleaseDC(pDc);