我用CxImage处理图象,现在打开一个tiff文件,然后再自己读入一个bmp位图,现在就想在显示bmp在tiff上的时候不是简单的画上去,想把它们混合成一个tiff,或者bmp文件,请问怎么解决!望高手给出代码!问题解决了再加分!!!

解决方案 »

  1.   

    (1)新建一个与显示器兼容的位图句并,用::CreateCompatibleBitmap,
    (好象是这样拼写);
    (2)将这个句并选到一块内存中,
    (3)在这快内存中画tiff文件;
    (4)在这块内存中画bmp文件;
    (5)将这个句并选出内存;
    (6)通过句并将DDB转换为tiff.
      

  2.   

    用AlphaBlend;
    WINGDI.H中定义为
    BOOL  WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
    不过好象只能在 Winnt5.0(2000)以后的版本中使用
    fun(HDC hdc,HBITMAP bmpSour,HBITMAP bmpDest){
    BLENDFUNCTION bf;
    bf.BlendOp = AC_SRC_OVER;
    bf.BlendFlags = 0;
    bf.SourceConstantAlpha = 128; //(0-255)透明度
    bf.AlphaFormat = 0;HDC hMemDC = ::CreateCompatibleDC(hdc);
    HBITMAP hOld = (HBITMAP)SelectObject(hMemDC,bmpDest);
    Bitblt(hdc,0,0,hMemDC,0,0,宽,高);
    SelectObject(hMemDC,bmpSour)
    AlphaBlend(hdc,0,0,宽,高,hMemDC,0,0,宽,高,bf);
    SelectObject(hMemDC,hOld);
    DeleteDC(hMemDC);
    }
      

  3.   

    加一句,编译时请链接lib MSIMG32.LIB
      

  4.   

    感谢以上各位的解答,其实我想解决的问题就是用cximage打开一个tiff文件,然后再自己读入一个bmp位图画在tiff上,现在想把他们在一起保存为一个tiff或者bmp不知道怎么解决。
      

  5.   

    CXImage连源码都提供了,他有一个CXMemFile的类,你可以把在内存位图中AlphaBlend,再通过CXImage保存,连源码都给了,不会搞不定吧