使位图透明

(GDI)----------------------------------------------------  

CPaintDC dc(this);
  CBitmap FootballBMP;
  FootballBMP.LoadBitmap(IDB_FOOTBALLBMP);
  CDC ImageDC;
  ImageDC.CreateCompatibleDC(&dc);
  CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP);
  TransparentBlt(dc.m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218, 199, RGB(0xff,0xff,0xff));
  ImageDC.SelectObject(pOldImageBMP);

 

(GDI+ )----------------------------------------------------  


void CTestGdiDlg::DrawPNG()
{
 CDC *pDC = GetDC();
 Graphics graph(pDC->m_hDC);
 ImageAttributes imAtt;
 int n1 = 20;
 int n2 = 255;//最重要的就是调整这两数
 imAtt.SetColorKey(Color(n1,n1,n1),Color(n2,n2,n2),ColorAdjustTypeDefault);
 graph.SetSmoothingMode(SmoothingModeAntiAlias);
 Image imageBlue(L"a.png");
 graph.DrawImage(&imageBlue,Rect(0,0,300,300),0,0,200,200,UnitPixel,&imAtt);
}

(GetEncoderClsid)--------------------------------------------------------

INT CTestGdiDlg::GetEncoderClsid(const   WCHAR*   format,   CLSID*   pClsid)
{
 UINT     num   =   0;                     //   number   of   image   encoders
 UINT     size   =   0;                   //   size   of   the   image   encoder   array   in   bytes
 ImageCodecInfo*   pImageCodecInfo   =   NULL;
 GetImageEncodersSize(&num,   &size);
 if(size   ==   0)
  return   -1;     //   Failure
 pImageCodecInfo   =   (ImageCodecInfo*)(malloc(size));
 if(pImageCodecInfo   ==   NULL)
  return   -1;     //   Failure
 GetImageEncoders(num,   size,   pImageCodecInfo);
 for(UINT   j   =   0;   j   <   num;   ++j)
 {
  if(   wcscmp(pImageCodecInfo[j].MimeType,   format)   ==   0   )
  {
   *pClsid   =   pImageCodecInfo[j].Clsid;
   free(pImageCodecInfo);
   return   j;     //   Success
  }        
 }
 free(pImageCodecInfo);
 return   -1;     //   Failure
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值