黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 文章正文
[图文]Delphi编程-图片的淡入淡出效果
        ★★★★
Delphi编程-图片的淡入淡出效果
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-12-15

程序代码如下:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, StdCtrls;

type

  TfrmMain = class(TForm)

    Image1: TImage;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  frmMain: TfrmMain;

  Bitmap:TBitmap;

implementation

{$R *.dfm}

 

procedure TfrmMain.Button1Click(Sender: TObject);

var

  sBlendFunction: BlendFunction;

  // 这是Alpha混合时需要的一个类型参数

  i: byte;

begin

    if Button1.Caption='淡入' then

    begin

        Button1.Caption:='淡出';

        with sBlendFunction do

        // 设置初值

        begin

            BlendOp := AC_SRC_OVER;

            // 目前惟一支持的一种混合方式

            BlendFlags := 0;

            // 必须为零

            AlphaFormat := 0

            // 默认

        end;

        for i := 0 to 51 do // 共有51

        begin

            sBlendFunction.SourceConstantAlpha:= i * 5;

            // 从全透明到不透明,每次渐变5

            Windows.AlphaBlend(Image1.Canvas.Handle,0,0,Image1.Width,

               Image1.Height,Bitmap.Canvas.Handle,0,0,

               Bitmap.Width,Bitmap.Height,sBlendFunction);

               // Alpha混合处理

            sleep(50);

            // 延时50毫秒,适当的延时可让效果看起来更逼真

            Image1.Refresh;

            // 一定要实时刷新Image1,才能看出变化

        end;

    end

    else

    begin

        Button1.Caption:='淡入';

        with sBlendFunction do

        begin

            BlendOp := AC_SRC_OVER;

            BlendFlags := 0;

            AlphaFormat := 0;

        end;

        for i := 0 to 51 do

        begin

            sBlendFunction.SourceConstantAlpha:= i * 5;

            Windows.AlphaBlend(Image1.Canvas.Handle,0,0,Image1.Width,

               Image1.Height,Bitmap.Canvas.Handle,0,0,

               1,1,sBlendFunction);

            sleep(50);

            Image1.Refresh;

        end;

    end;

end;

 

procedure TfrmMain.FormCreate(Sender: TObject);

begin

    Bitmap:=TBitmap.Create;

    Bitmap.LoadFromFile('.bmp');

end;

 

procedure TfrmMain.FormDestroy(Sender: TObject);

begin

    Bitmap.Free;

end;

 

end.

保存文件,然后按F9键运行程序。在程序运行的初始画面上单击“淡入”按钮,TImage组件上就会显示图像的淡入效果,淡入效果的过程如图2-19所示。

淡入过程结束后的程序运行结果如图2-20所示。

           

2-19  淡入效果过程                   2-20  程序运行结果

单击“淡出”按钮,可以观看图像的淡出效果。

通过本实例,读者可以学习到如何设置图像的透明效果。稍加扩展,AlphaBlend函数不但可以实现图像的淡入淡出效果,还可以实现图像的透明叠加效果。

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886