2017-12-02 102 views
0

我想在安装程序中为控制功能生成动画。如何在Inno Setup中设置动画效果

You can see this video

+0

1)您必须用文字解释您的问题,而不是使用指向外部网站的链接。 2)如果您无法用言语表达自己,请至少将视频上传到某个值得信赖的网站。 –

+0

我无法解释我的计划。我应该在哪里上传我的视频? –

+0

所以你需要一个安装程序中的按钮,当点击时它会展开一个菜单? –

回答

0

可以使用一个计时器来使用动画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; 

enter image description here

的控制(动画实际上比图像显示更加光滑)

对于从右到左侧动画,请参见Inno Setup - Animate a control roll out from right in a determinate page

+0

如何让先生更快? –

+0

只需减少'SetTimer'调用的时间间隔和/或增加'ScaleX'调用中的步骤。 –

+0

你让它工作吗? –