关于wpf动画有关问题
关于wpf动画问题?
我在xaml中写一段动画,然后在事件触发中这样写可以触发事件:
<EventTrigger SourceName="button1" RoutedEvent="Button.Click">
<BeginStoryboard Name="closeQueryCanvasStoryboard"
Storyboard="{StaticResource 动画名}">
</BeginStoryboard>
</EventTrigger>
以上代码可以实现当button1单击时播放动画。
我现在的为问题是:如何在程序的运行过程中由代码自动触发动画呢,比如在程序执行过程中根据代码中的某一变量n是否等于10来确定是否播放动画,每当n从1加到10的时候就播放一次动画。
------解决方案--------------------
我在xaml中写一段动画,然后在事件触发中这样写可以触发事件:
<EventTrigger SourceName="button1" RoutedEvent="Button.Click">
<BeginStoryboard Name="closeQueryCanvasStoryboard"
Storyboard="{StaticResource 动画名}">
</BeginStoryboard>
</EventTrigger>
以上代码可以实现当button1单击时播放动画。
我现在的为问题是:如何在程序的运行过程中由代码自动触发动画呢,比如在程序执行过程中根据代码中的某一变量n是否等于10来确定是否播放动画,每当n从1加到10的时候就播放一次动画。
------解决方案--------------------
- C# code
public partial class Window1 : Window { private Storyboard myStoryBoard; public Window1() { InitializeComponent(); this.RegisterName("TestButton1", TestButton1); DoubleAnimation da = new DoubleAnimation(); da.From = 1.0; da.To = 0.0; myStoryBoard = new Storyboard(); myStoryBoard.Children.Add(da); Storyboard.SetTargetName(da, "TestButton1"); Storyboard.SetTargetProperty(da, new PropertyPath(Button.OpacityProperty)); } private void TestButton_Click(object sender, RoutedEventArgs e) { myStoryBoard.Begin(this, true); } }
------解决方案--------------------
我这么试的一个,在后台调用好使,你试着改改。
挺长时间不用,有点忘了。
txttt.Begin();
- C# code
<Rectangle Name="MyRectangle" Width="100" Height="100"> <Rectangle.Fill> <SolidColorBrush x:Name="MySolidColorBrush" Color="Blue" /> </Rectangle.Fill> <Rectangle.Triggers> <EventTrigger RoutedEvent="Page.Loaded"> <BeginStoryboard> <Storyboard x:Name="txttt" RepeatBehavior="Forever" AutoReverse="True"> <DoubleAnimation Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width" From="100" To="200" Duration="0:0:1" /> <ColorAnimation Storyboard.TargetName="MySolidColorBrush" Storyboard.TargetProperty="Color" From="Blue" To="Red" Duration="0:0:1" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Rectangle.Triggers> </Rectangle>