VC中实现带有背景位图的树型控件

         今天想给树形控件贴个背景图片,网上搜了好多,都是给对话框贴背景的,结果照样给树形控件贴了后,背景倒是有了,但是背景将树形控件覆盖住了,找了好久,找到下面这个方法,经验证可行。转过来。

            

void CMyTreeCtrl::OnPaint() 
{ 
 CPaintDC dc(this); // device context for painting 
 CRect rcclient; 
 GetClientRect(&rcclient); 

 // create a compatible memory dc 
 CDC memdc; 
 memdc.CreateCompatibleDC(&dc); 
 CBitmap bitmap; 
 bitmap.CreateCompatibleBitmap(&dc, rcclient.Width(), rcclient.Height()); 
 memdc.SelectObject( &bitmap ); 
 CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0); 
 CDC maskdc; 
 maskdc.CreateCompatibleDC(&dc); 
 CBitmap maskbitmap; 
 maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL); 
 maskdc.SelectObject( &maskbitmap ); 
 maskdc.BitBlt( 0, 0, rcclient.Width(), rcclient.Height(), &memdc, 
 rcclient.left, rcclient.top, SRCCOPY);
  CBitmap m_bitmap;
  m_bitmap.LoadBitmap(IDB_BITMAP3); 
 CBrush brush; 
 brush.CreatePatternBrush(&m_bitmap); 
 dc.FillRect(rcclient, &brush); 
 memdc.SetBkColor(RGB(0,0,0)); 
 memdc.SetTextColor(RGB(255,255,255)); 
 memdc.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &maskdc, rcclient.left,  rcclient.top, SRCAND); 
 dc.SetBkColor(RGB(255,255,255)); 
 dc.SetTextColor(RGB(0,0,0)); 
 dc.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &maskdc, rcclient.left, rcclient.top, SRCAND); 
 dc.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &memdc, rcclient.left, rcclient.top,SRCPAINT); 
 brush.DeleteObject(); 
} 

 没有使用SetStretchBltMode(HALFTONE)设置图片缩小样式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值