如何在Inno Setup中设置动画效果
答
可以使用一个计时器来使用动画InnoTools InnoCallback DLL library
[Files]
Source: InnoCallback.dll; Flags: dontcopy
[Code]
type
TTimerProc = procedure(H: LongWord; Msg: LongWord; IdEvent: LongWord; Time: LongWord);
function SetTimer(hWnd: longword; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord):
LongWord; external '[email protected] stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord;
external '[email protected] stdcall';
function WrapTimerProc(Callback: TTimerProc; ParamCount: Integer): LongWord;
external '[email protected]:innocallback.dll stdcall';
var
MainPanelAnimated: Boolean;
AnimationTimer: LongWord;
procedure AnimationTimerProc(
H: LongWord; Msg: LongWord; IdEvent: LongWord; Time: LongWord);
var
L: Integer;
begin
L := WizardForm.MainPanel.Left + ScaleX(5);
if L > 0 then
begin
L := 0;
KillTimer(0, AnimationTimer);
end;
WizardForm.MainPanel.Left := L;
end;
procedure CurPageChanged(CurPageID: Integer);
var
HoverTimerCallback: LongWord;
begin
if WizardForm.OuterNotebook.ActivePage = WizardForm.InnerPage then
begin
if not MainPanelAnimated then
begin
HoverTimerCallback := WrapTimerProc(@AnimationTimerProc, 4);
AnimationTimer := SetTimer(0, 0, 5, HoverTimerCallback);
WizardForm.MainPanel.Left := -WizardForm.MainPanel.Width;
MainPanelAnimated := True;
end;
end;
end;
的控制(动画实际上比图像显示更加光滑)
对于从右到左侧动画,请参见Inno Setup - Animate a control roll out from right in a determinate page。
+0
如何让先生更快? –
+0
只需减少'SetTimer'调用的时间间隔和/或增加'ScaleX'调用中的步骤。 –
+0
你让它工作吗? –
1)您必须用文字解释您的问题,而不是使用指向外部网站的链接。 2)如果您无法用言语表达自己,请至少将视频上传到某个值得信赖的网站。 –
我无法解释我的计划。我应该在哪里上传我的视频? –
所以你需要一个安装程序中的按钮,当点击时它会展开一个菜单? –