绘制位图

//绘制图片<1>:
	  CImage   m_bmp;
	  HRESULT hResult = m_bmp.Load(L"res.bmp");
	  if (FAILED(hResult))
	  {
		//Load()加载图片出错
		return ;
	  }
	  CBitmap bmp;
	  //获得加载图片的句柄
	  bmp.Attach(m_bmp);
	  //获取图片格式
	  BITMAP bmInfo;
	  bmp.GetBitmap(&bmInfo);
	  //创建设备内存
	  CDC dcMem;
	  dcMem.CreateCompatibleDC(GetDC());
	  CBitmap *pOldmap=(CBitmap*)dcMem.SelectObject(bmp);
	  if ( NULL == pOldmap )
	  {
		  return;
	  }
	  //该函数可以设置指定设备环境中的位图拉伸模式.防止StretchBlt()函数拉伸图片时失真.
	  SetStretchBltMode(pDC->m_hDC,STRETCH_HALFTONE);
	  //绘制位图
	  int rt = pDC->StretchBlt(pos.x,pos.y,/*目标长*/,/*目标宽*/,&dcMem,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);


//绘制图片<2>:
	  CBitmap*   m_bmpTitle;
	  m_bmpTitle->LoadBitmap(图片资源ID);
	  if (m_bmpTitle)
	  {
		CBitmap * pOldBmp = NULL;
		CDC srcDC;
		srcDC.CreateCompatibleDC( pDC );
		if (NULL != m_bmpTitle->m_hObject)
		{
			pOldBmp = srcDC.SelectObject( m_bmpTitle );
			if ( NULL != pOldBmp )
			{
				BITMAP bmInfo;
				VERIFY( m_bmpLabel->GetObject(sizeof(bmInfo), &bmInfo) == sizeof(bmInfo) );  
				//绘制位图
				int rt = pDC->BitBlt( /*目标x*/, /*目标y*/,bmInfo.bmWidth, bmInfo.bmHeight, &srcDC, 0, 0, SRCCOPY );
			}
		}
 	  }


//绘制图片<3>:
 	HBITMAP hbmp;
	hbmp  = SHLoadDIBitmap(L"res.bmp");
  	if(hbmp)
  	{
	  CBitmap bmp;
	  //获得加载图片的句柄
	  bmp.Attach(hbmp);
	  //获取图片格式
	  BITMAP bmInfo;
	  bmp.GetBitmap(&bmInfo);
	  //创建设备内存
	  CDC dcMem;
	  dcMem.CreateCompatibleDC(GetDC());
	  CBitmap *pOldmap=(CBitmap*)dcMem.SelectObject(bmp);
	  if ( NULL == pOldmap )
	  {
		  return;
	  }
	  SetStretchBltMode(pDC->m_hDC,STRETCH_HALFTONE);
	  int rt = pDC->StretchBlt(pos.x,pos.y,/*目标长*/,/*目标宽*/,&dcMem,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);//绘制位图
	}
//绘制图片<4>:
  		CBitmap m_bmp;
		if( m_bmp.m_hObject != NULL )
			m_bmp.DeleteObject();
		CImage   hbmp;
		HRESULT hResult = hbmp.Load(L"RES.bmp");
		if (FAILED(hResult))
		{
			//加载图片出错
			return ;
		}
		m_bmp.Attach( hbmp );
		//获取picture控件DC
		CPaintDC dc(GetDlgItem(IDC_STATIC));
		CRect rcclient;
		//获取picture控件大小位置
		GetDlgItem(IDC_STATIC)->GetClientRect(&rcclient);
		//图片信息
		BITMAP bmInfo;
		m_bmp.GetBitmap(&bmInfo);
		//创建设备内存
		CDC dcMem;
		dcMem.CreateCompatibleDC(&dc);
		CBitmap *pOldmap=(CBitmap*)dcMem.SelectObject(m_bmp);
		if ( NULL == pOldmap )
		{
			return;
		}
		SetStretchBltMode(dc.m_hDC,STRETCH_HALFTONE);
		//在picture控件上显示图片
		int rt = dc.StretchBlt(rcclient.left,rcclient.top,rcclient.Width(),rcclient.Height(),&dcMem,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);
	}


	//TCHAR path[50] = L"RES.bmp";
	//hbmp = (HBITMAP)::LoadImage(NULL,path,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE); 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值