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

在应用程序中引入图片淡入淡出效果,可以让用户界面更加美观。在Delphi中可以调用WindowsAPI函数AlphaBlend来实现图片的淡入淡出效果,既保证速度,又很简单。

向窗体上添加一个TImage组件和一个TButton组件,TImage充当图片显示的载体, TButton组件用于控制淡入效果和淡出效果的转换。添加组件后的窗体如图2-18所示。

2-18  添加组件后的窗体

程序首先定义一个TBitmap类型的全局对象Bitmap,在程序运行过程中,由这个全局对象存储图像文件,在窗体的初始化过程中添加初始化Bitmap对象的代码如下:

procedure TfrmMain.FormCreate(Sender: TObject);

begin

    Bitmap:=TBitmap.Create;

    Bitmap.LoadFromFile('.bmp');

end;

在程序运行过程中,如果用户单击第1次单击TButton组件,那么它显示文本就会从“淡入”改变为“淡出”。再次单击这个TButton组件,那显示文本又会回到“淡入”。依次类推,单击“淡入”按钮就会实现图像的淡入效果,响应代码如下:

procedure TfrmMain.Button1Click(Sender: TObject);

var

  sBlendFunction: BlendFunction;

  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

        begin

            sBlendFunction.SourceConstantAlpha:= i * 5;

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

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

               Bitmap.Width,Bitmap.Height,sBlendFunction);

            sleep(50);

            Image1.Refresh;

        end;

    end

    else

    begin

//图片的淡出效果,此处省略了

    end;

end;

程序首先会填充一个BlendFunction结构,这个结构是AlphaBlend的使用中最重要的参数。它有4个变量,其中BlendOP是混合方式,当前只有AC_SRC_OVER一种。BlendFlags必须为0SourceConstantAlpha控制画面的透明度,为0时,完全透明;为255时,完全不透明,并且逐渐变化。AlphaFormatAlphaBlend函数中源句柄和目的句柄的格式,一般指定为0。然后程序就会调用循环中的AlphaBlend函数来设置TImage组件上显示图像的透明度,并且利用Sleep函数做延时效果。最后在每次循环中都要加入TImage组件的Refresh方法来刷新淡入的效果。

图像的淡出效果与淡入效果的原理大体相同,不再赘述。

[1] [2] 下一页  

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