MFC用Picture Control显示图像

(以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
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值