C#学习教程:WPF中动态改变旋转动画每秒几次,我需要根据外部数据改变旋转速率,以便随着时间的推移旋转速度加快和/或减慢(平稳地)。我目前正在使用以X的持续时间开始的DoubleAnimation来执行此操作,然后每秒从0.0到360.0永远重复几次:注意:我确实发现我必须更改To和From属性“当前角度”和“当前角度+360”的动画-幸运的是我的RotationTransform在角度>360度时没有问题-以防止再次从零角度开始旋转。我的问题是:这合理吗?好像不是这样的。继续将新的DoubleAnimations应用于旋转变换的Angle属性似乎是错误的-有点像我让WPF为旋转设置动画,同时自己为旋转速度设置动画。有没有更好的办法?在故事板上有一个SpeedRatio设置,它是持续时间的乘数。但是您不能绑定到它,因为它不是依赖属性。要解决此问题,您可以在故事板上使用SetSpeedRatio函数。请注意,这仅在情节提要以代码开头时才有效(否则您将收到错误消息)。下面的代码是一个完整的示例,说明如何在对象中引发事件以影响旋转矩形的动画速度。文本框和数据绑定的目的是更新背景对象。按钮只是文本框失去焦点并更新对象。更新速度然后是C#代码{publicWindow1(){InitializeComponent();//创建新对象BackgroundObjectbo=newBackgroundObject();//仅当文本框更改速度值时才需要绑定this.DataContext=bo;//挂接事件bo.SpeedChanged+=bo_SpeedChanged;//需要防止出错Storyboardsb=(Storyboard)rc.FindResource("spin");sb.开始();}//改变速度publicvoidbo_SpeedChanged(objectsender,intnewSpeed){Storyboardsb=(Storyboard)rc.FindResource("spin");sb.SetSpeedRatio(newSpeed);}}publicdelegatevoidSpeedChangedEventHandler(objectsender,intnewSpeed);公共类BackgroundObject{publicBackgroundObject(){_speed=10;}公共事件SpeedChangedEventHandlerSpeedChanged;私人int_speed;publicintSpeed{get{return_speed;}设置{_speed=值;SpeedChanged(这个,价值);}}}我相信你可以适合你的使用方法。以上就是C#学习教程:WPF中动态改变旋转动画的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
