MFC用Picture Control显示图像

来源:互联网 发布:天心软件怎么用 编辑:程序博客网 时间:2024/05/29 19:02
(以VS2010为例)
1. 点击资源, 选择Dialog并点开, 在任意对话资源上右击, 选择"插入"Dialog", 如图1所示.
 
2. 插入后, 默认ID为IDD_DIALOG1, 可修改为自己相应的ID, 修改方式为:选择"属性"(可右击资源, 选择属性, 也可以选中资源后, 点右上的"属性")
 
3. 选择工具箱->Picture Control 控件, 并将Picture Control控件拖到对话框上.
 
拖上去后, 可做相关属性的修改. 如可以其ID修改为IDC_MY_PIC(下面的程序以将其ID修改为IDC_MY_PIC为例).


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


0 0