过渡
在 Avalonia 中,过渡效果的设计也受到了 CSS 动画的重大启发。它们会监听目标属性值的任何变化,并根据其参数对变化进行动画处理。可以通过 Transitions
属性在任何 Control
上定义它们:
上面的示例将监听 Rectangle
的 Opacity
属性的变化,当值发生变化时,会平滑地将旧值转换为新值,耗时 2 秒钟。
过渡效果也可以在任何样式中使用,只需使用 Transitions
作为目标属性,并将它们封装在 Transitions
对象中,如下所示:
每个过渡效果都有一个 Property
、Delay
、Duration
和一个可选的 Easing
属性。
Property
指的是过渡效果的目标,用于监听和对目标属性的值进行动画处理。
Delay
指的是应用过渡效果之前等待的时间量。
Duration
指的是过渡效果播放的时间量。
缓动函数与关键帧动画中描述的一样。
可用的过渡效果类型如下。必须根据正在动画的属性的类型使用正确的类型。
BoxShadowsTransition
:用于BoxShadows
目标属性BrushTransition
:用于IBrush
目标属性ColorTransition
:用于Color
目标属性CornerRadiusTransition
:用于CornerRadius
目标属性DoubleTransitions
:用于double
目标属性FloatTransitions
:用于float
目标属性IntegerTransitions
:用于int
目标属性PointTransition
:用于Point
目标属性SizeTransition
:用于Size
目标属性ThicknessTransition
:用于Thickness
目标属性TransformOperationsTransition
:用于ITransform
目标属性VectorTransition
:用于Vector
目标属性
可以对使用类似CSS语法应用的渲染变换进行过渡动画。下面的示例展示了一个Border,当鼠标指针悬停在它上面时,它会旋转45度:
可用的过渡动画类型为:
translate
translate(10px)
,translate(0px, 10px)
px
translateX
translateX(10px)
px
translateY
translateY(10px)
px
scale
scale(10)
,scale(0, 10)
scaleX
scaleX(10)
scaleY
scaleY(10)
skew
skew(90deg)
,skew(0, 90deg)
deg
, grad
, rad
, turn
skewX
skewX(90deg)
deg
, grad
, rad
, turn
skewY
skewY(90deg)
deg
, grad
, rad
, turn
rotate
rotate(90deg)
deg
, grad
, rad
, turn
matrix
matrix(1,2,3,4,5,6)
Avalonia还支持WPF-style的渲染变换,如RotateTransform
,ScaleTransform
等。这些变换不能进行过渡动画:如果要对渲染变换应用过渡动画,请始终使用类似CSS的格式。
Last updated