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

来源:互联网 发布:淘宝拍单兼职可靠吗 编辑:程序博客网 时间:2024/05/06 18:56

       实现图像指定颜色的透明这是我写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!

原创粉丝点击