请问如何才能实现从一副图像渐变到另一副图像?能给我点源程序或例子吗?望请指教,谢谢您....

解决方案 »

  1.   

    这个问题比较复杂,
    你最好自己写一个DIB类,
    实现方法:
    举例说第一个图像的某字节为
    aR1G1B1,第二个图像的某字节为aR2G2B2,
    这样的话新建一个DIB,这个字节就为
    aR3G3B3
    R3=tR1+(1-t)R2,
    t从0.01-1
    每算完后,
    显示第三个图像一次,
    这是最快的方法了,我想。
    2000里面可能好一点,有一些支持ALPHA混合的函数。
    不过原理一样,不会比这样快多少。
      

  2.   

    其中image2,image3 装入两个不同的.bmp图片
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Image3: TImage;
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
       udtblender:TBlendFunction;
    begin
       with  udtblender do
       begin
         Blendop:=AC_SRC_OVER;
         Blendflag:=0;
         SourceConstantAlpha:=x;
         AlphaFormat=0;
       end;
       image1.Canvas.Draw(0,0,image2.Picture.Graphic);
       AlphaBlend(image1.Canvas.Handle,0,0,image1.Width,image1.Height,
                  image3.Canvas.Handle,0,0,image3.Width,image3.Height,
                  udtblender);
    end;end.
      

  3.   

    谢谢delphi_han大侠,等下子我去调试看看行不行...
      

  4.   

    delphi_han你的程序无法运行,AlphaBlend()这个函数没有参数的,怎么你的有那么多的参数?
    clion:哪里有什么资料吗?
      

  5.   

    手头只有教科书.你在GOOGLE中输入"图象变形"可以找到一些文章的
    这里是一篇
    http://www.cad.zju.edu.cn/chinagraph/chinese/specialtopic/animation/Animation_ZS2_Imagemorph.doc