要求实现的功能:
在程序中读取32位带alpha通道的tga文件,
通过DXDraw将其画到带背景屏幕上,要求实现
和背景的融合,有透明效果。

解决方案 »

  1.   

    位图的我知道,不过不是用DXDraw
    如果有tga文件格式的话,我想应该不会太困难吧?反正最后都要变成位图的.
    下面这一小段是我自己写的一个控件库的公共过程,仅供参考procedure DrawAlpha(DrawRect:TRECT;DestDC:HDC;srcBMP:TBitmap;
      AlphaValue:integer=255);
    var
      bf:TBlendFunction;
    begin  bf.BlendOp:=AC_SRC_OVER;
      bf.BlendFlags:=0;
      bf.AlphaFormat:=AC_SRC_ALPHA;
      bf.SourceConstantAlpha:=AlphaValue;
      
      with DrawRect do
      begin
        AlphaBlend(DestDC,Left,Top,Right-left,Bottom-top,SrcBmp.Canvas.Handle,
        0,0,SrcBmp.Width,SrcBMP.Height,bf);
      end;
    end;