当前位置: 首页>>代码示例>>C#>>正文


C# ClockController.Seek方法代码示例

本文整理汇总了C#中System.Windows.Media.Animation.ClockController.Seek方法的典型用法代码示例。如果您正苦于以下问题:C# ClockController.Seek方法的具体用法?C# ClockController.Seek怎么用?C# ClockController.Seek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。


在下文中一共展示了ClockController.Seek方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SeekAlignedToLastTickExample

//引入命名空间
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
using System.Xml;
using System.Configuration;

namespace SDKSample
{
    /// <summary>
    /// Shows how to interactively control a clock.
    /// </summary>

  public class SeekAlignedToLastTickExample : Page
    {
    
        private AnimationClock myClock;
        private TextBlock currentTimeIndicator;
        private TextBox seekDestination;
        private TextBlock rectangleWidthIndicator;
        private Rectangle myRectangle;
        
        public SeekAlignedToLastTickExample()
        {

            this.WindowTitle = "Controlling a Storyboard";
            this.Background = Brushes.White;

            StackPanel myStackPanel = new StackPanel();
            myStackPanel.Margin = new Thickness(20);
            
            // Create a rectangle.
            myRectangle = new Rectangle();
            myRectangle.Width = 100;
            myRectangle.Height = 20;
            myRectangle.Margin = new Thickness(12,0,0,5);
            myRectangle.Fill = new SolidColorBrush(Color.FromArgb(170, 51, 51, 255));
            myRectangle.HorizontalAlignment = HorizontalAlignment.Left;
            myStackPanel.Children.Add(myRectangle);                    
            
            //
            // Create an animation and a storyboard to animate the
            // rectangle.
            //
            DoubleAnimation myDoubleAnimation = 
                new DoubleAnimation(100, 500, new Duration(TimeSpan.FromSeconds(60)));  
            myClock = myDoubleAnimation.CreateClock();
            myRectangle.ApplyAnimationClock(Rectangle.WidthProperty, myClock);
            myClock.Controller.Stop();

            //
            // Create some buttons to control the storyboard
            // and a panel to contain them.
            //
            StackPanel buttonPanel = new StackPanel();
            buttonPanel.Orientation = Orientation.Horizontal;
            Button beginButton = new Button();
            beginButton.Content = "Begin";
            beginButton.Click += new RoutedEventHandler(beginButton_Clicked);            
            buttonPanel.Children.Add(beginButton);
            Button pauseButton = new Button();
            pauseButton.Content = "Pause";
            pauseButton.Click +=new RoutedEventHandler(pauseButton_Clicked);
            buttonPanel.Children.Add(pauseButton);
            Button resumeButton = new Button();
            resumeButton.Content = "Resume";
            resumeButton.Click +=new RoutedEventHandler(resumeButton_Clicked);
            buttonPanel.Children.Add(resumeButton);
            Button skipToFillButton = new Button();
            skipToFillButton.Content = "Skip to Fill";
            skipToFillButton.Click +=new RoutedEventHandler(skipToFillButton_Clicked);
            buttonPanel.Children.Add(skipToFillButton);
            Button setSpeedRatioButton = new Button();
            setSpeedRatioButton.Content = "Triple Speed";
            setSpeedRatioButton.Click +=new RoutedEventHandler(setSpeedRatioButton_Clicked);
            buttonPanel.Children.Add(setSpeedRatioButton);
            Button stopButton = new Button();
            stopButton.Content = "Stop";
            stopButton.Click +=new RoutedEventHandler(stopButton_Clicked);
            buttonPanel.Children.Add(stopButton);
            Button removeButton = new Button();
            removeButton.Content = "Remove";
            removeButton.Click +=new RoutedEventHandler(removeButton_Clicked);
            buttonPanel.Children.Add(removeButton);            
            
            myStackPanel.Children.Add(buttonPanel);    
            
            // Create some controls to display the
            // storyboard's current time and the
            // current width of the rectangle.
            StackPanel seekPanel = new StackPanel();
            seekPanel.Margin = new Thickness(10);
            StackPanel aPanel = new StackPanel();
            Label aLabel = new Label();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel.Content = "Current Time: ";
            aPanel.Children.Add(aLabel);
            currentTimeIndicator = new TextBlock();
            aPanel.Children.Add(currentTimeIndicator);
            seekPanel.Children.Add(aPanel);
            
            aPanel = new StackPanel();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel = new Label();
            aLabel.Content = "Rectangle Width: ";
            aPanel.Children.Add(aLabel);
            rectangleWidthIndicator = new TextBlock();
            rectangleWidthIndicator.Text = myRectangle.Width.ToString(); 
            aPanel.Children.Add(rectangleWidthIndicator);
            seekPanel.Children.Add(aPanel);

            // Create some controls to enable the
            // user to specify a seek position.
            
            aPanel = new StackPanel();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel = new Label();
            aLabel.Content = "Seek Offset: " ;
            aPanel.Children.Add(aLabel);
            seekDestination = new TextBox();
            seekDestination.Text = "0";
            aPanel.Children.Add(seekDestination);       
            seekPanel.Children.Add(aPanel);

            Button seekButton = new Button();
            seekButton.Content = "Seek";
            seekButton.Click += new RoutedEventHandler(seekButton_Clicked);
            seekPanel.Children.Add(seekButton);
            Button seekAlignedToLastTickButton = new Button();
            seekAlignedToLastTickButton.Content = "Seek Aligned to Last Tick";
            seekAlignedToLastTickButton.Click += new RoutedEventHandler(seekAlignedToLastTickButton_Clicked);
            seekPanel.Children.Add(seekAlignedToLastTickButton);           
            
            myStackPanel.Children.Add(seekPanel);
            
            this.Content = myStackPanel;   
            
            myClock.CurrentTimeInvalidated += new EventHandler(myClock_CurrentTimeInvalidated);
        }
        
        // Begins the clock.
        private void beginButton_Clicked(object sender, RoutedEventArgs args)
        {

            myClock.Controller.Begin();         
        }
        
        // Pauses the clock.
        private void pauseButton_Clicked(object sender, RoutedEventArgs args)
        {
            myClock.Controller.Pause();         
        }

        // Resumes the clock.
        private void resumeButton_Clicked(object sender, RoutedEventArgs args)
        {
            myClock.Controller.Resume();        
        }

        // Advances the clock to its fill period.
        private void skipToFillButton_Clicked(object sender, RoutedEventArgs args)
        {
            myClock.Controller.SkipToFill();          
        }

        // Updates the clock's speed.
        private void setSpeedRatioButton_Clicked(object sender, RoutedEventArgs args)
        {
            // Makes the clock progress three times as fast as normal.
            myClock.Controller.SpeedRatio = 3;        
        }

        // Stops the clock.
        private void stopButton_Clicked(object sender, RoutedEventArgs args)
        {
            myClock.Controller.Stop();        
        }

        // Removes the clock.
        private void removeButton_Clicked(object sender, RoutedEventArgs args)
        {
            myClock.Controller.Remove();        
        }        
        
        private void seekButton_Clicked(object sender, RoutedEventArgs args)
        {
            try {
            
                // The rectangle width will probably not be at its new
                // value when this call is made, because the 
                // clock probably hasn't ticked yet.
                TimeSpan seekTime = TimeSpan.Parse(seekDestination.Text);
                myClock.Controller.Seek(seekTime, TimeSeekOrigin.BeginTime);
                rectangleWidthIndicator.Text = myRectangle.Width.ToString();
            }catch(FormatException ex)
            {
                MessageBox.Show("Invalid TimeSpan value.");
                seekDestination.Focus();
            }
        }
        
        private void seekAlignedToLastTickButton_Clicked(object sender, RoutedEventArgs args)
        {

            try {
            
                // The rectangle width will be at its new
                // value when this call is made, because SeekAlignedToLastTick 
                // operation immediately updates timeline and animation
                // values.        
                TimeSpan seekTime = TimeSpan.Parse(seekDestination.Text);
                myClock.Controller.SeekAlignedToLastTick(seekTime, TimeSeekOrigin.BeginTime);
                rectangleWidthIndicator.Text = myRectangle.Width.ToString();
            }catch(FormatException ex)
            {
                MessageBox.Show("Invalid TimeSpan value.");
                seekDestination.Focus();
            }    
        }
        
        private void myClock_CurrentTimeInvalidated(object sender, EventArgs e)
        {
        
            currentTimeIndicator.Text = myClock.CurrentTime.ToString();
        }
    }
}
开发者ID:.NET开发者,项目名称:System.Windows.Media.Animation,代码行数:232,代码来源:ClockController.Seek


注:本文中的System.Windows.Media.Animation.ClockController.Seek方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。