今天看了DoubleAnimation这个方法。可以动态的设置属性。 这里就很奇怪。我动态的new出来的巨型一直不发生变化。而直接在舞台上画出的巨型就能发生变化。 研究了好久才发现DoubleAnimation只能操作已经声明过的属性。 Rectangle.RenderTransform> </Rectangle> private const string ANIMATION = "<Storyboard Name=\"TestStoryboard\">" + "<DoubleAnimation
实现效果 今天以一个交互式小球的例子跟大家分享一下wpf动画中DoubleAnimation的基本使用。该小球会移动到我们鼠标左键或右键点击的地方。 类的介绍: DoubleAnimation 是 WPF 中的一个类,它用于创建从一个 double 值到另一个 double 值的动画。 DoubleAnimation 类有几个重要的属性:• From:动画的起始值。• To:动画的结束值。• By:动画的增量值,用于从 From 值增加或减少。• Duration:动画的持续时间。 • xAnimation:这是一个 DoubleAnimation 对象,它定义了动画的目标值和持续时间。在这个例子中,动画的目标值是鼠标点击的位置,持续时间是 4 秒。 var xAnimation = new DoubleAnimation(targetPoint.X, new Duration(
AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.00000" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.08333" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.16666" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.24999" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.33332" To="0"/> <DoubleAnimation
在WPF动画中常见的动画就平移、缩放以及旋转,一般会用到故事板(Storyboard)和浮点动画( DoubleAnimation),下面我们先对这两个进行具体的介绍,因为本次我们主要利用故事板来添加动画 doubleanimation = new DoubleAnimation();//先进行实例化 doubleanimation.Form=100;//设置起始值 doubleanimation.To =200;//设置结束值 doubleanimation.RepeatBehavior = RepeatBehavior.Forever;//设置动画循环播放 doubleanimation.AutoReverse = true;//设置可以进行反转 doubleanimation.Duration=new Duration(TimeSpan.FromSeconds(3));//设置动画播放时间 动画方式的类型 yd4 = new DoubleAnimation(1.0,0.5,new Duration(TimeSpan.FromSeconds(3)));//实例化浮点动画,分别包含了缩放的倍数和动画的时间
AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.00000" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.08333" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.16666" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.24999" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.33332" To="0"/> <DoubleAnimation
"sbLeft" Storyboard.TargetProperty="(Canvas.Left)" Storyboard.TargetName="el"> <DoubleAnimation Mode=OneWay}" To="{ Binding Path=LeftTo, Mode=OneWay}" Duration="0:0:0.25"> </DoubleAnimation "sbSlow" Storyboard.TargetProperty="(Canvas.Left)" Storyboard.TargetName="el"> <DoubleAnimation Mode=OneWay}" To="{ Binding Path=SlowTo, Mode=OneWay}" Duration="0:0:1"> </DoubleAnimation 配合DoubleAnimation可以在一段时间内改变某个对象的double型属性。比如透明值在1秒内1到0。上面例子就是做了一个在一段时间内Canvas.Left属性从0到最右边的动画。
= new DoubleAnimation(); Storyboard.SetTarget(doubleAnimation, ButtonTranslateTransform) )); doubleAnimation.To = 100; doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds (TranslateTransform.X)")); doubleAnimation.To = 100; doubleAnimation.Duration = new DoubleAnimation(); Storyboard.SetTargetName(doubleAnimation, nameof(ButtonTranslateTransform )); doubleAnimation.To = 100; doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds
AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.00000" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.08333" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.16666" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.24999" To="0"/> <DoubleAnimation AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.33332" To="0"/> <DoubleAnimation
<Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation
RotateTransform rtf = new RotateTransform(); trans.RenderTransform = rtf; DoubleAnimation dbAscending = new DoubleAnimation(0, 360, new Duration (TimeSpan.FromSeconds(1))); RotateTransform rtf = new RotateTransform(); trans.RenderTransform = rtf; DoubleAnimation dbAscending = new DoubleAnimation(0, 360, new Duration(TimeSpan.FromSeconds(1))); Storyboard <BeginStoryboard> <Storyboard> <DoubleAnimation
<Storyboard RepeatBehavior="Forever"> <DoubleAnimation ="0" Duration="0:0:0.08333" /> <DoubleAnimation ="0" Duration="0:0:0.08333" /> <DoubleAnimation ="0" Duration="0:0:0.08333" /> <DoubleAnimation ="0" Duration="0:0:0.08333" /> <DoubleAnimation
的宽度和高度,可以试试下面的方法 var storyboard = new Storyboard(); var widthAnimation = new DoubleAnimation ellipse); storyboard.Children.Add(widthAnimation); var heightAnimation = new DoubleAnimation ellipse); storyboard.Children.Add(heightAnimation); storyboard.Begin(); 上面代码使用 DoubleAnimation 作出连续的动画,在使用 DoubleAnimation 时将会从对应属性的当前值修改到指定值,修改的速度可以通过速度函数设置,默认使用匀速动画。 通过 TranslateTransform 方法修改圆圈的坐标,也就是动画也可以通过修改 TranslateTransform 的 X 和 Y 属性做动画 和上面代码相同,设置 DoubleAnimation
后一种的写法如下: <Storyboard> <DoubleAnimation Storyboard.TargetName="textBlock" Storyboard.TargetProperty > <QuarticEase EasingMode="EaseOut" /> </DoubleAnimation.EasingFunction> </DoubleAnimation 在按钮的 Pressed 状态中,用 DoubleAnimation 将它们前后的所有 GradientStop 的 Offset 都设置为 0 或 1,效果是将所有颜色向两边推。 因为现在旋转了 90 度,所以实际上是向上下两个方向推: <DoubleAnimation Storyboard.TargetName="G2" Storyboard.TargetProperty ="Offset" To="0" /> …… …… <DoubleAnimation Storyboard.TargetName="G13"
:Key="EasingFunction.DrawLine" EasingMode="EaseOut"/> <Storyboard x:Key="Storyboard.DrawName"> <DoubleAnimation BeginTime="0:0:0" Duration="0:0:1" EasingFunction="{StaticResource EasingFunction.DrawLine}"/> <DoubleAnimation BeginTime="0:0:1" Duration="0:0:1" EasingFunction="{StaticResource EasingFunction.DrawLine}"/> <DoubleAnimation BeginTime="0:0:2" Duration="0:0:1" EasingFunction="{StaticResource EasingFunction.DrawLine}"/> <DoubleAnimation BeginTime="0:0:4" Duration="0:0:1" EasingFunction="{StaticResource EasingFunction.DrawLine}"/> <DoubleAnimation
<Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation <Storyboard BeginTime="0:0:0"> <DoubleAnimation
上一篇几乎都在说DoubleAnimation的应用,这篇说说PointAnimation。 1. 可以将DoubleAnimation理解成这样:Storyboard将TimeSpan传递给DoubleAnimation,DoubleAnimation通过这个TimeSpan(有时还需要结合EasingFunction > <ElasticEase EasingMode="EaseInOut" /> </DoubleAnimation.EasingFunction > </DoubleAnimation> <ColorAnimation Duration="0:0:2" To="#FF48F412 这样理解的话PointAnimation和ColorAnimation只不过是<em>DoubleAnimation</em>的延伸而已,进一步的说,通过<em>DoubleAnimation</em>应该可以延伸出所有类型属性的动画。
<Storyboard RepeatBehavior="Forever"> <DoubleAnimation BeginTime="0:0:0" Duration="0:0:5" From="0" To="360" > </DoubleAnimation IndeterminateProgress.RenderTransform> </local:IndeterminateProgress> <DoubleAnimation Storyboard.TargetName="Rount" Storyboard.TargetProperty="Y" From="0" To="100" Duration="0:0:2"></DoubleAnimation > </DoubleAnimation> 我们使用Rount,x,记得要给名字,然后两秒,从0到300,下面就是弹跳
To="Open"> <Storyboard> <DoubleAnimation > </DoubleAnimation> <DoubleAnimation Duration <VisualState x:Name="Closed"> <Storyboard> <DoubleAnimation <VisualState x:Name="Open"> <Storyboard> <DoubleAnimation Storyboard.TargetName="xform" /> <DoubleAnimation
<BeginStoryboard> <Storyboard> <DoubleAnimation <BeginStoryboard> <Storyboard> <DoubleAnimation <BeginStoryboard> <Storyboard> <DoubleAnimation <BeginStoryboard> <Storyboard> <DoubleAnimation <BeginStoryboard> <Storyboard> <DoubleAnimation
Storyboard.TargetProperty="X" EasingFunction="{StaticResource EasingFunction.Translate}"/> <DoubleAnimation Storyboard TranslateStoryboard => (Storyboard)FindResource("Storyboard.Translate"); #endif private DoubleAnimation TranslateXAnimation => (DoubleAnimation) TranslateStoryboard.Children[0]; private DoubleAnimation TranslateYAnimation TranslateXAnimation => (DoubleAnimation) TranslateStoryboard.Children[0]; private DoubleAnimation TranslateYAnimation => (DoubleAnimation) TranslateStoryboard.Children[1]; private readonly Random