VS.net2005基于EVC++实现图像指定颜色的透明

       实现图像指定颜色的透明这是我写nfml遇到的一个小问题,对于vc++不是特别熟的人来说算是个问题!自认为还凑合吧,不过感觉效率一般。
        此类技术一般用于有背景的贴图,我们不能针对每种背景对图片进行处理,那么就需要对图片轮廓进行高对比度颜色处理,就是用某种跟图片的像素不相近的单色填充图片背景,然后用程序将这个单色去掉来实现透明。具体实现如下:

LRESULT CNfmlGuiDraw::NfmlDrawTransparentImage(HWND hWnd, HBITMAP hBitmap, INT xPos, INT yPos,COLORREF transColor)
{
 HDC hdc = GetDC(hWnd);
 BITMAP bmp;
 int xCnt;
 HDC hdcMem = CreateCompatibleDC(hdc);
 HGDIOBJ hOldSel = SelectObject(hdcMem, hBitmap);
 GetObject(hBitmap, sizeof(BITMAP), &bmp);
 for(xCnt=xPos; xCnt<bmp.bmWidth; xCnt+=bmp.bmWidth)
 {
  TransparentImage(hdc,
       xCnt,
       yPos,
       bmp.bmWidth + xCnt,
       bmp.bmHeight + yPos,
       hdcMem,
       xPos,
       yPos,
       bmp.bmWidth + xPos,
       bmp.bmHeight + yPos,
       transColor      );
 }
 SelectObject(hdcMem, hOldSel);
 DeleteDC(hdcMem);
 return 0;
}

 

GOOD LUCK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值