建立不规则窗体的主要代码

 
  1. void Tranc(void)
  2. {
  3.     CDC MemDC,*pDC=NULL;//当前窗体设备和临时设备
  4.     CRect rcWnd;//当前窗体矩形范围
  5.     COLORREF bgColor,curColor;//背景色和当前指针处颜色
  6.     int x,y;窗口矩形的行和列
  7.     CBitmap bmp;   
  8.     CRng WndRgn,tmpRgn;//窗体范围和临时范围变量

  9.     pDC=this->GetDC();//取得当前窗体设备
  10.     this->GetWindowRect(&rcWnd);//取得当前窗体的范围
  11.     MemDC.CreateCompatibleDC(pDC);
  12.     bmp.LoadBitmap(IDB_BACKGROUND);//载入背景图片
  13.     bmp.SelectObject(&bmp);//载入图片对象
  14.     bgColor=MemDC.GetPixel(0,0);//取得背景色
  15.     WndRgn.CreateRectRgn(0,0,rcWnd.Width(),rcWnd.Height());
  16.    
  17.     for(x=0;x<rcWnd.Width();x++)
  18.         for(y=0;y<rcWnd.Height();y++)
  19.             {
  20.             curColor=MemDC.GetPixel(x,y);
  21.             if(curColor==bgColor)
  22.                 {
  23.                 tmpRgn.CreateRectRgn(x,y,x+1,y+1);//建立1*1的范围
  24.                 WndRgn.CombineRgn(&WndRgn,&tmpRgn,RGN_XOR);//异或,把颜色=底色的范围去掉
  25.                 tmpRgn.DeleteObject();
  26.                 }
  27.             }
  28. MemDC.DeleteDC();
  29. bmp.DeleteObject();
  30. this.SetWindowRgn(WndRgn,TRUE);//设置当前窗体区域
  31. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值