Microsoft Photo Editor可以将支持透明色的Gif图象的某种颜色变成透明色?
如果我要编程实现,如何?请高手指教!

解决方案 »

  1.   

    那首先把gif文件格式弄明白,清楚它的透明色是怎么回事
      

  2.   

    很多书里都有的!
    例如:“楼空图”
    用一张“人物图”底为黑色,在用一张,人物为黑色,底为白色进行一系列and 和 or运算
    canvasFrame::canvasFrame()
    {
    Create(NULL,"绘图窗口");
    CClientDC dc(this);
    int width = dc.GetDeviceCaps(HORZRES);
    int height = dc.GetDeviceCaps(VERTRES);
    GetWindowRect( &rect );
    width = ( width - ( rect.right - rect.left ))/2 ;
    height = (height - (rect.bottom - rect.top ))/2 ;
    MoveWindow( width , height , (rect.right - rect.left ) , (rect.bottom - rect.top ) ,true);
    GetClientRect(&rect); 
    mdc = new CDC;        //建立一内存DC mdc
    bitmap = new CBitmap; //建立源位图
    bgbmp = new CBitmap;  //建立背景图
    mdc->CreateCompatibleDC(&dc); //将mdc转换成与dc相容的DC
    bgbmp->m_hObject = (HBITMAP)::LoadImage(NULL,"bground.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE); //载入背景图文件
    bitmap->m_hObject = (HBITMAP)::LoadImage(NULL,"man.bmp",IMAGE_BITMAP,208,154,LR_LOADFROMFILE); //载入来源位图文件
    }void canvasFrame::OnPaint()
    {
    CPaintDC dc(this);         //建立响应WM_PAINT消息的DC
    mdc->SelectObject(bgbmp);  //取得背景图
    dc.BitBlt(0,0,rect.right,rect.bottom,mdc,0,0,SRCCOPY); //贴上背景图
    mdc->SelectObject(bitmap); //取得源位图
    dc.BitBlt(250,150,104,154,mdc,104,0,SRCAND); 
    //将屏蔽与背景图做AND运算
    dc.BitBlt(250,150,104,154,mdc,0,0,SRCPAINT);
    //将要透空的图与背景图做OR运算 
    }摘字:游戏设计入门
    你可以去www.china-pub.com下载前4章,有讲的,还有好多书都有。
      

  3.   

    有中文版本的Gif格式的文档么?
      

  4.   

    实现透明显示图片的效果是将图片中的一种颜色作为透明色,任何一种都可以,然后在绘制图片时判断图片的每个象素的颜色值,如果是透明色的颜色值就不写该象素,否则就将象素的写到屏幕上,GIF 是 256 色的,透明色往往设置为第 255 种颜色,即当象素值是 0xFF 时就不写该象素。现在 GDI 好像有支持上述方法的 API,可以去查一下 MSDN,是与 BitBlt 有关的函数。几年前有一本清华出的图象格式编程的书上有解码和编码 GIF 图象格式的说明和例程,如果你了解 LZW 压缩算法将会有所帮助。
      

  5.   

    gz+up
    http://expert.csdn.net/Expert/topic/1238/1238104.xml?temp=2.244204E-02
      

  6.   

    中文的Gif:http://asp.6to23.com/iseesoft/devdoc/imgdoc/gif.htm