把bmp图片的白色区域转化称透明


  HBITMAP hbmp,   hmask; //图象及掩码句柄  
  int w,   h; //图片宽和高  
   
  void   Bitmap::Load(char   *fn) //加载图片  
  {  
  DeleteObject(hbmp); //清空句柄  
  hbmp=(HBITMAP)LoadImage(  
  NULL,  
  fn, //完整文件路径  
  IMAGE_BITMAP,  
  0,  
  0,  
  LR_LOADFROMFILE   |   LR_CREATEDIBSECTION  
  );  
  DIBSECTION ds;  
  GetObject(hbmp,   sizeof(ds),   &ds); //得到图片矩形  
  w=ds.dsBmih.biWidth;  
  h=ds.dsBmih.biHeight;  
  }  
   
  void   Bitmap::CreateMask() //创建掩码  
  {  
  hmask=CreateBitmap(w,   h,   1,   1,   NULL); //创建黑白图片  
  HDC   bmpDC=CreateCompatibleDC(0);  
  HDC   maskDC=CreateCompatibleDC(0);  
  SelectObject(bmpDC,   hbmp);  
  SelectObject(maskDC,   hmask);  
   
  SetBkColor(bmpDC,   RGB(255,255,255)); //设置挖空的颜色  
  BitBlt(maskDC,   0,   0,   w,   h,   bmpDC,   0,   0,   SRCCOPY);//生成掩码  
  SetBkColor(bmpDC,   RGB(0,   0,   0));  
  SetTextColor(bmpDC,   RGB(255,   255,   255));  
  BitBlt(bmpDC,   0,   0,   w,   h,   maskDC,   0,   0,   SRCAND);//把挖空部分涂成黑色  
   
  DeleteDC(bmpDC);  
  DeleteDC(maskDC);  
  }  
   
  void   Bitmap::Draw(HDC   ddc,   int   dx=0,   int   dy=0,   int   dw=0,   int   dh=0,   int   sx=0,   int   sy=0)  
  {  
  if(!dw)   dw=w;  
  if(!dh)   dh=h;  
   
  HDC   bmpDC=CreateCompatibleDC(ddc);  
  SelectObject(bmpDC,   hbmp);  
   
  HDC   maskDC=CreateCompatibleDC(ddc);  
  SelectObject(maskDC,   hmask);  
   
  BitBlt(ddc,   dx,   dy,   dw,   dh,   maskDC,   sx,   sy,   SRCAND);  
  BitBlt(ddc,   dx,   dy,   dw,   dh,   bmpDC,   sx,   sy,   SRCPAINT);  
   
  DeleteDC(maskDC);  
  DeleteDC(bmpDC);  
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值