📄 tewipe.pas
字号:
BitBlt(Data.Canvas.Handle, 0, 0, Data.Width, Data.Height,
Data.SrcBmp.Canvas.Handle, 0, 0, cmSrcCopy);
end;
case DirectionToUse of
tedRight:
begin
Frames := Data.Width + BandWidth;
RVisible := Rect(0 - BandWidth+1, 0, -BandWidth, Data.Height);
if BandBmp <> nil then
RBand := Rect(RVisible.Right+1, RVisible.Top,
RVisible.Right+BandWidth+1, RVisible.Bottom);
end;
tedLeft:
begin
Frames := Data.Width + BandWidth;
RVisible := Rect(Data.Width + BandWidth, 0, Data.Width + BandWidth,
Data.Height);
if BandBmp <> nil then
RBand := Rect(RVisible.Left-BandWidth-1, RVisible.Top,
RVisible.Right-1, RVisible.Bottom);
end;
tedDown:
begin
Frames := Data.Height + BandWidth;
RVisible := Rect(0, - BandWidth, Data.Width, -BandWidth);
if BandBmp <> nil then
RBand := Rect(RVisible.Left, RVisible.Bottom+1, RVisible.Right,
RVisible.Bottom+BandWidth+1);
end;
tedUp:
begin
Frames := Data.Height + BandWidth;
RVisible := Rect(0, Data.Height + BandWidth, Data.Width,
Data.Height + BandWidth);
if BandBmp <> nil then
RBand := Rect(RVisible.Left, RVisible.Top-BandWidth-1, RVisible.Right,
RVisible.Bottom-1);
end;
tedDownRight:
begin
Frames := Data.Width + Data.Height;
RVisible := Rect(0, 0, 0, 0);
end;
tedDownLeft:
begin
if Data.Width > Data.Height
then Frames := Data.Width
else Frames := Data.Height;
RVisible := Rect(Data.Width, 0, Data.Width, 0);
end;
tedUpRight:
begin
if Data.Width > Data.Height
then Frames := Data.Width
else Frames := Data.Height;
RVisible := Rect(0, Data.Height, 0, Data.Height);
end;
tedUpLeft:
begin
if Data.Width > Data.Height
then Frames := Data.Width
else Frames := Data.Height;
RVisible := Rect(Data.Width, Data.Height, Data.Width, Data.Height);
end;
tedIn:
begin
if Data.Width > Data.Height
then Frames := Data.Width div 2
else Frames := Data.Height div 2;
RVisible := Rect(0, 0, Data.Width, Data.Height);
end;
tedOut:
begin
if Data.Width > Data.Height
then Frames := Data.Width div 2
else Frames := Data.Height div 2;
RVisible := Rect(Data.Width div 2, Data.Height div 2, Data.Width div 2,
Data.Height div 2);
end;
end;
end;
procedure TWipeTransition.Finalize(Data: TTETransitionData);
begin
AuxBmp1.Free;
AuxBmp1 := nil;
AuxBmp2.Free;
AuxBmp2 := nil;
end;
procedure TWipeTransition.ExecuteFrame(Data: TTETransitionData;
CurrentFrame, Step, TotalFrames, LastExecutedFrame: Longint);
var
R1, R2, R3, R4: TRect;
aux1, aux2, aux3, aux4: Word;
begin
inherited;
case DirectionToUse of
tedRight:
begin
RVisible.Left := RVisible.Right;
RVisible.Right := RVisible.Right + Step;
if BandBmp <> nil then
begin
RBand.Left := RVisible.Right + 1;
RBand.Right := RBand.Left + BandWidth;
BandTop := Random(Margin);
end;
end;
tedLeft:
begin
RVisible.Right := RVisible.Left;
RVisible.Left := RVisible.Left - Step;
if BandBmp <> nil then
begin
RBand.Right := RVisible.Left - 1;
RBand.Left := RBand.Right - BandWidth;
BandTop := Random(Margin);
end;
end;
tedDown:
begin
RVisible.Top := RVisible.Bottom;
RVisible.Bottom := RVisible.Bottom + Step;
if BandBmp <> nil then
begin
RBand.Top := RVisible.Bottom + 1;
RBand.Bottom := RBand.Top + BandWidth;
BandLeft := Random(Margin);
end;
end;
tedUp:
begin
RVisible.Bottom := RVisible.Top;
RVisible.Top := RVisible.Top - Step;
if BandBmp <> nil then
begin
RBand.Bottom := RVisible.Bottom - 1;
RBand.Top := RBand.Bottom - BandWidth;
BandLeft := Random(Margin);
end;
end;
tedDownRight:
begin
aux1 := Round((Data.Width / TotalFrames) * CurrentFrame);
aux2 := Round((Data.Height / TotalFrames) * CurrentFrame);
R1 := Rect(0, RVisible.Bottom, aux1, aux2);
R2 := Rect(RVisible.Right, 0, aux1, RVisible.Bottom);
RVisible.Right := aux1;
RVisible.Bottom := aux2;
end;
tedDownLeft:
begin
aux1 := Data.Width - Round((Data.Width / TotalFrames) * CurrentFrame);
aux2 := Round((Data.Height / TotalFrames) * CurrentFrame);
R1 := Rect(aux1, RVisible.Bottom, Data.Width, aux2);
R2 := Rect(aux1, 0, RVisible.Left, RVisible.Bottom);
RVisible.Left := aux1;
RVisible.Bottom := aux2;
end;
tedUpRight:
begin
aux1 := Round((Data.Width / TotalFrames) * CurrentFrame);
aux2 := Data.Height - Round((Data.Height / TotalFrames) * CurrentFrame);
R1 := Rect(0, aux2, aux1, RVisible.Top);
R2 := Rect(RVisible.Right, RVisible.Top, aux1, Data.Height);
RVisible.Right := aux1;
RVisible.Top := aux2;
end;
tedUpLeft:
begin
aux1 := Data.Width - Round((Data.Width / TotalFrames) * CurrentFrame);
aux2 := Data.Height - Round((Data.Height / TotalFrames) * CurrentFrame);
R1 := Rect(aux1, aux2, Data.Width, RVisible.Top);
R2 := Rect(aux1, RVisible.Top, RVisible.Left, Data.Height);
RVisible.Left := aux1;
RVisible.Top := aux2;
end;
tedIn:
begin
aux1 := (Round((Data.Width / TotalFrames) * CurrentFrame)) div 2;
aux3 := Data.Width - aux1;
aux2 := (Round((Data.Height / TotalFrames) * CurrentFrame)) div 2;
aux4 := Data.Height - aux2;
R1 := Rect(RVisible.Left, RVisible.Top, RVisible.Right, aux2);
R2 := Rect(RVisible.Left, aux2, aux1, aux4);
R3 := Rect(aux3, aux2, RVisible.Right, aux4);
R4 := Rect(RVisible.Left, aux4, RVisible.Right, RVisible.Bottom);
RVisible := Rect(aux1, aux2, aux3, aux4);
end;
tedOut:
begin
aux1 :=
(Data.Width - Round((Data.Width / TotalFrames) * CurrentFrame)) div 2;
aux3 := Data.Width - aux1;
aux2 :=
(Data.Height - Round((Data.Height / TotalFrames) * CurrentFrame)) div 2;
aux4 := Data.Height - aux2;
R1 := Rect(aux1, aux2, aux3, RVisible.Top);
R2 := Rect(aux1, RVisible.Top, RVisible.Left, aux4);
R3 := Rect(RVisible.Right, RVisible.Top, aux3, RVisible.Bottom);
R4 := Rect(aux1, RVisible.Bottom, aux3, aux4);
RVisible := Rect(aux1, aux2, aux3, aux4);
end;
end; //EROC itnA
if BandBmp <> nil
then
begin
BitBlt(AuxBmp1.Canvas.Handle, 0, 0, AuxBmp1.Width, AuxBmp1.Height,
Data.SrcBmp.Canvas.Handle, RBand.Left, RBand.Top, cmSrcCopy);
BitBlt(AuxBmp1.Canvas.Handle, 0, 0, AuxBmp1.Width, AuxBmp1.Height,
BandBmp.Canvas.Handle, BandLeft, BandTop, cmSrcAnd);
BitBlt(AuxBmp2.Canvas.Handle, 0, 0, AuxBmp2.Width, AuxBmp2.Height,
Data.DstBmp.Canvas.Handle, RBand.Left, RBand.Top, cmSrcCopy);
BitBlt(AuxBmp2.Canvas.Handle, 0, 0, AuxBmp2.Width, AuxBmp2.Height,
BandBmp.Canvas.Handle, BandLeft, BandTop, $00220326);
BitBlt(AuxBmp2.Canvas.Handle, 0, 0, AuxBmp2.Width, AuxBmp2.Height,
AuxBmp1.Canvas.Handle, 0, 0, cmSrcPaint);
BitBlt(Data.Canvas.Handle, RBand.Left, RBand.Top, RBand.Right-RBand.Left,
RBand.Bottom-RBand.Top, AuxBmp2.Canvas.Handle, 0, 0, cmSrcCopy);
Windows.UnionRect(UpdateRect, RBand, UpdateRect);
BitBlt(Data.Canvas.Handle, RVisible.Left, RVisible.Top,
RVisible.Right-RVisible.Left+1, RVisible.Bottom-RVisible.Top+1,
Data.DstBmp.Canvas.Handle, RVisible.Left, RVisible.Top, cmSrcCopy);
Windows.UnionRect(UpdateRect, RVisible, UpdateRect);
end
else
begin
case DirectionToUse of
tedRight,
tedLeft,
tedDown,
tedUp:
BitBlt(Data.Canvas.Handle, RVisible.Left, RVisible.Top,
RVisible.Right-RVisible.Left, RVisible.Bottom-RVisible.Top,
Data.DstBmp.Canvas.Handle, RVisible.Left, RVisible.Top, cmSrcCopy);
tedDownRight,
tedDownLeft,
tedUpRight,
tedUpLeft:
begin
BitBlt(Data.Canvas.Handle, R1.Left, R1.Top, R1.Right-R1.Left,
R1.Bottom-R1.Top, Data.DstBmp.Canvas.Handle, R1.Left, R1.Top,
cmSrcCopy);
BitBlt(Data.Canvas.Handle, R2.Left, R2.Top, R2.Right-R2.Left,
R2.Bottom-R2.Top, Data.DstBmp.Canvas.Handle, R2.Left, R2.Top,
cmSrcCopy);
end;
tedIn, tedOut:
begin
BitBlt(Data.Canvas.Handle, R1.Left, R1.Top, R1.Right-R1.Left,
R1.Bottom-R1.Top, Data.DstBmp.Canvas.Handle, R1.Left, R1.Top,
cmSrcCopy);
BitBlt(Data.Canvas.Handle, R2.Left, R2.Top, R2.Right-R2.Left,
R2.Bottom-R2.Top, Data.DstBmp.Canvas.Handle, R2.Left, R2.Top,
cmSrcCopy);
BitBlt(Data.Canvas.Handle, R3.Left, R3.Top, R3.Right-R3.Left,
R3.Bottom-R3.Top, Data.DstBmp.Canvas.Handle, R3.Left, R3.Top,
cmSrcCopy);
BitBlt(Data.Canvas.Handle, R4.Left, R4.Top, R4.Right-R4.Left,
R4.Bottom-R4.Top, Data.DstBmp.Canvas.Handle, R4.Left, R4.Top,
cmSrcCopy);
end;
end;
end;
end;
initialization
TERegisterTransition(TWipeTransition);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -