wpf storyboard stop

clike 复制代码
Storyboard BeginStory = (Storyboard)this.FindResource("StarAnimation");
BeginStory.Begin(this,true);
.
.
.
BeginStory.Stop(this);

真麻烦 参数的问题

iscontrolable 中的true少不了 this也少不了,this是做动画的uielement

动画的属性传递信息

clike 复制代码
doubleAnimation = new DoubleAnimation(line1.Y1, line1.Y2, new System.Windows.Duration(TimeSpan.FromSeconds(secs)))
            {
                AccelerationRatio = 0,
                BeginTime = TimeSpan.FromSeconds(bsecs),
            };
            doubleAnimation.Completed += (sender, e) => { //do complete thing  };
            //这样简单点 但是不知道怎么控制 line1.BeginAnimation(Line.Y1Property, doubleAnimation);
            StoryboardLine1 = new Storyboard();
            //Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.Y)"));
            Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(Line.Y1Property));
            Storyboard.SetTarget(doubleAnimation, this.line1);
            StoryboardLine1.Children.Add(doubleAnimation);
            

以下转载:https://blog.csdn.net/xwlyun/article/details/9156897

在wpf中我们常用storyboard故事板装载很多的动画处理Animation,我们需要用Storyboard.SetTarget设置操作的对象,需要用Storyboard.SetTargetProperty设置操作对象的操作属性PropertyPath,本例将说明一种操作属性PropertyPath的便利方法:

效果:点击button,button的横坐标x由12到300,播放过程动画

clike 复制代码
			 this.button1.RenderTransform = new TranslateTransform();

            Storyboard sb = new Storyboard();
            DoubleAnimation da = new DoubleAnimation();
            da.From = 12;
            da.To = 300;
            da.Duration = TimeSpan.FromSeconds(3);
            sb.Children.Add(da);

            DependencyProperty[] propertyChain = new DependencyProperty[]
            {
                Button.RenderTransformProperty,
                TranslateTransform.XProperty
            };

            Storyboard.SetTarget(da, this.button1);
            Storyboard.SetTargetProperty(da, new PropertyPath("(0).(1)", propertyChain));

            sb.Completed += new EventHandler((object sender1, EventArgs e1) => { MessageBox.Show("completed"); });
            sb.Begin();

一般我们在写到Storyboard.SetTargetProperty时遇到new PropertyPath,

如果是简单的属性,例如Button.WidthProperty,我们可以直接new PropertyPath(Button.WidthProperty)达到目的,

但如果你发现你需要操作到的属性无法在Button中直接'.'出来,就需要用到上例用到的属性链方法:

首先定义一个属性链:

复制代码
        DependencyProperty[] propertyChain = new DependencyProperty[]
        {
            Button.RenderTransformProperty,
            TranslateTransform.XProperty
        };

属性链的写法,定义一个DependencyProperty属性的数组,该数组中的元素均是Property属性,且按照从属关系先后排列,例如上例中,我们需要先将button的RenderTransform设置为TranslateTransform,然后通过TranslateTransform的XProperty来更改button的x坐标,

当然,别忘了初始化button的RenderTransform属性= new TranslateTransform(),否则动画将没有效果。

相关推荐
samble5 天前
从零搭建半导体设备上位机(九):拖拽与交互,Adorner、DragDrop 与晶圆拖放信息
wpf·拖拽·adorner
郝学胜-神的一滴6 天前
AI 编程智能体 27:吃透MCP通信机制
人工智能·python·langchain·wpf·numpy·scikit-learn
波力海苔夹心脆6757 天前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
陈仓主教7 天前
# WPF CheckBox 控件详解与使用—WPF 中的控件(6)--复选框控件(CheckBox)
wpf
光泽雨9 天前
WPF 音视频四大核心方案对比
wpf·音视频
浪扼飞舟10 天前
WPF(数据绑定)
wpf
samble11 天前
从零搭建半导体设备上位机(四):单实例、启动流程与配置文件,App 里那 526 行到底在干什么
wpf·配置文件·单实例
浪扼飞舟11 天前
WPF(控件的继承树、内容控件、布局控件)
wpf
avi911114 天前
电影开源Jevdo - 源码介绍(vue版)没有android 和 没有wpf
android·wpf·框架·数据爬虫·meego·电影管理
吾与谁归in15 天前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf