unit Unit1;
{
一个淡入淡出的例子。
2008-05-14。
}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, RzPanel, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Timer2: TTimer;
RzPanel1: TRzPanel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Bitmap: TBitmap;
Image2: Timage;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
TmpRect: TRect;
TxtHeight: Integer;
begin
DoubleBuffered := true;
Image1.Canvas.Brush.Color := clBtnface;
Image2 := Timage.Create(self);
Image2.Width := RzPanel1.Width;
Image2.Height := RzPanel1.Height;
Image2.Parent := self;
Image2.Visible := false;
Image2.Canvas.Brush.Color := clActiveCaption; //背景色
Image2.Canvas.Font.Color := clWhite;
TmpRect := Image2.Canvas.ClipRect;
TxtHeight := Image2.Canvas.TextHeight('2008灾难重重,2008众志成城!');
//Image2.Canvas.TextOut(5,(RzPanel1.Height-TxtHeight) div 2, '2008灾难重重,2008众志成城!');
Image2.Canvas.TextRect(TmpRect, 5, (RzPanel1.Height - TxtHeight) div 2,
'2008灾难重重,2008众志成城!');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
sBlendFunction: BlendFunction;
i: byte;
begin
//Image1.Canvas
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, Image2.Canvas.Handle, 0, 0,
Image2.Width, Image2.Height, sBlendFunction);
sleep(50);
Image1.Refresh;
end;
{
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, Image2.Canvas.Handle, 0, 0,
1, 1, sBlendFunction);
sleep(50);
Image1.Refresh;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
sBlendFunction: BlendFunction;
i: byte;
begin
//RzPanel1.Canvas.TextOut(0,0,'2008灾难重重,2008众志成城!');
Timer2.Enabled := false;
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(RzPanel1.Canvas.Handle, 0, 0, Image2.Width,
Image2.Height, Image2.Canvas.Handle, 0, 0,
Image2.Width, Image2.Height, sBlendFunction);
sleep(50);
//RzPanel1.Refresh;
end;
for i := 0 to 51 do
begin
sBlendFunction.SourceConstantAlpha := i * 5;
Windows.AlphaBlend(RzPanel1.Canvas.Handle, 0, 0, RzPanel1.Width,
RzPanel1.Height, Image2.Canvas.Handle, 0, 0,
1, 1, sBlendFunction);
sleep(50);
//RzPanel1.Refresh;
end;
Timer2.Enabled := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(self);
Form2.Show;
end;
end.