XE FireMonkey与WPF 比较

一、在FireMonkey中动画类TAnimation与c# WPF中的System.Window.Media.Animation命名空间中的Animation 类 类似

FireMonkey的TAnimation的子类都在FMX.Ani单元中

FireMonkey

C# WPF

说明

TFloatAnimation

DoubleAnimation

基本动画

TFloatKeyAnimation

DoubleWithKeyFrameAnimation

关键帧动画

TColorAnimation

ColorAnimation

 

TColorKeyAnimation

ColorKeyAnimation

 

TGradientAnimation

GradientAnimation

渐变动画

TPathAnimation

PathAnimation

路径动画

TRectAnimation

RectAnimation

 

TBitmapListAnimation

BitMapAnimation

位图动画

 

FireMonkey中动画三要素:Duration  StartValue  StopValue

C# WPF    中动画三要素:Duration  From       To

C# WPF 通过依赖属性PropertyObject 来指定动画控制的属性TargetProperty

TargetPropertyName  AutoReserve属性来控制重复播放动画

而FireMonkey 也不例外,通过对象属性PropertyName指定对象动画属性,通过在目标对象上添加动画对象来实现动画。Loop来控制循环播放动画

 

TAnimation类的主要成员

 


protected

  function NormalizedTime: Single;      //

  procedure ProcessAnimation; virtual;  //其子类们主要通过覆盖此方法来实现不同的动画

  procedure Loaded; override;           //public

  procedure Start; virtual;             //播放

  procedure Stop; virtual;              //停止

  procedure StopAtCurrent; virtual; //停止在当前帧; Pause 属性不同的是它会触动OnFinish 事件

  procedure StartTrigger(...); virtual; //如果不是覆盖, 一般应使用 TriggerTriggerInverse 属性而不是该方法

  procedure ProcessTick(...);           //内部使用的动画执行方法, 主要由它来调用 ProcessAnimation 过程.

  property Running: Boolean ...;        //是否运行中; 只读

  property Pause: Boolean ...;          //暂停published

  property AnimationType: TAnimationType ...;     //动画类型; 它好像只影响到插入(Interpolation)算法

  property AutoReverse: Boolean ...;              //自动逆向(起点->终点->起点)

  property Enabled: Boolean ...;                  //是否可用

  property Delay: Single ...;                     //延迟多少秒再开始动画

  property Duration: Single ...;                  //动画长度(秒); 其子类一般会默认为 0.2

  property Interpolation: TInterpolationType ...; //动画插入类型; 通过此选项可实现像反弹等多种动画效果(很好玩)

  property Inverse: Boolean ...;                  //逆向动画(终点->起点)

  property Loop: Boolean ...;                     //循环播放

  property Trigger: TTrigger ...;                 //指定可触发动画的事件; 其值是个字符串(见下表)

  property TriggerInverse: TTrigger ...;          //指定可触发逆向动画的事件; 其值是个字符串(见下表)

  property OnProcess: TNotifyEvent ...;           //每个动画帧触发的事件

  property OnFinish: TNotifyEvent ...;            //停止时触发的事件end;

{ TriggerTriggerInverse 属性的可选值: WPF类似 }
'IsMouseOver=true'
'IsMouseOver=false'
'IsFocused=true'
'IsFocused=false'
'IsVisible=true'
'IsVisible=false'
'IsDragOver=true'
'IsDragOver=false'
'IsOpen=true'
'IsOpen=false'

TFloatKeyAnimationTColorKeyAnimation 可通过其 Keys 属性定义多个关键帧(前面几种都只有两个关键帧), 其属性扩展:


Keys             //TKeys 类型的集合, 元素类型是 TKey; 主要使用 TKey.ID(关键帧序号)、TKey.Key(参数值) 两个属性
PropertyName     //
StartFromCurrent //
TBitmapAnimation 用于两张图片的切换动画; 它的扩展属性有:
 

StartValue   //起点图片
StopValue    //终点图片
PropertyName //只能是 'Bitmap'
TBitmapListAnimation 只需要一张图片, 根据需要的动画帧数(AnimationCount)把图片均分, 然后让切分后的各部分连成动画; 它的扩展属性有:
 

AnimationCount  //动画帧数
AnimationBitmap //图片
PropertyName    //TPathAnimation 可以让对象绕一个指定的路径运动; 它的扩展属性有:Path: TPathData; //路径数据; 一般通过 TPathData.Data 读写数据, 数据(字符串)使用了 SVG 中 Path 的格式标准Rotate: Boolean; //是否旋转(自转)
路径动画简单示例: 先在 HD 窗体上放置一个 TRectangle, 选定后给它添加一个 TPathAnimation; 测试代码

猜你喜欢

转载自blog.csdn.net/qq_26657857/article/details/88969885
今日推荐