有一张图片,如果图片的底色是黑色的,现在要这张图片贴到别的图片上面,请问如何去掉这张图片的黑色的底色,谢谢!!

解决方案 »

  1.   

    gdi+?非常简单
    BitMap.MakeTransparent(MakeTranColor);//MakeTranColor你的背景色
      

  2.   

    Graphics graphics( MemDC.m_hDC );
    Bitmap bitmap(L"D:\\gz-2.BMP");
    bitmap.MakeTransparent(Color(255,255,0,255));
    graphics.DrawImage(&bitmap, 30, 0, bitmap.GetWidth(), bitmap.GetHeight());我的代码是这样的,编译时出现:error C2039: 'MakeTransparent' : is not a member of 'Bitmap',,
    如果解决??
      

  3.   

    MakeTransparent函数不是GDI+本身支持的函数,好像是.NET封装的。所以直接这么用应该不行。
    你可以设置ColorMatrix,它可以控制每个颜色成分。http://windowssdk.msdn.microsoft.com/en-us/library/ms533945.aspx
      

  4.   

    http://windowssdk.msdn.microsoft.com/en-us/library/ms533945.aspx
    是设置整个图的透明程度,不是去掉图的底色吧。
      

  5.   

    http://windowssdk.msdn.microsoft.com/en-us/library/ms533873.aspx上面的方法也可以,把黑色转换成你的底图色就行了
      

  6.   

    直接操作数据,把图片的data 部分全部置0.
    要么就是laiyiling(Graphics) 这哥们说的.
    当年我也找了好久那个函数...后来才知道不是vc的
      

  7.   

    http://blog.donews.com/mmycly/archive/2005/07/21/475006.aspx
    这个也许是正解,还没有看
      

  8.   

    直接用API:
    TransparentBlt
    用法参考MSDN,级简单,设置好源图像和目标图像的HDC,贴图位置,大小和透明色
    再直接调用就可以了。
      

  9.   

    兄弟,我查了两天,搞定了    // 图像属性类中设定要去掉的色
        ImageAttributes   imAtt;   
        // 从Color(210,210,210,210) 到 Color(255,255,255) 色将被去掉
        imAtt.SetColorKey(Color(210,210,210),Color(255,255,255));
        
        //使用带ImageAttributes的输出函数,输出图象将imAtt中指定的色去掉
        graphics.DrawImage(m_pImage,Rect(0,0,nWidth,nHeight),
            0,0,nWidth,nHeight,UnitPixel,&imAtt);
    以上是GDI+去背景色的方法