<Window x:Class="SoundAndVideo.AnimatedVideoWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="AnimatedVideoWindow" Height="450" Width="400"> <Window.Resources> <Storyboard x:Key="MediaStoryboardResource"> <MediaTimeline Storyboard.TargetName="media" Source="test.mpg" FillBehavior="HoldEnd" RepeatBehavior="Forever"></MediaTimeline> <DoubleAnimation Storyboard.TargetName="media" Storyboard.TargetProperty="(MediaElement.RenderTransform).(RotateTransform.Angle)" To="360" Duration="0:0:2" RepeatBehavior="Forever"></DoubleAnimation> </Storyboard> </Window.Resources> <StackPanel> <StackPanel.Triggers> <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="cmdPlay"> <EventTrigger.Actions> <BeginStoryboard Name="MediaStoryboard" Storyboard="{StaticResource MediaStoryboardResource}"/> </EventTrigger.Actions> </EventTrigger> <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="cmdStop"> <EventTrigger.Actions> <StopStoryboard BeginStoryboardName="MediaStoryboard"/> </EventTrigger.Actions> </EventTrigger> </StackPanel.Triggers> <Button Name="cmdPlay">Play (Declarative)</Button> <Button Name="cmdStop">Stop (Declarative)</Button> <Button Click="cmdPlayCode_Click">Play (Code)</Button> <MediaElement Name="media" Grid.Row="1" Stretch="None" RenderTransformOrigin="0.5,0.5" > <MediaElement.RenderTransform> <RotateTransform></RotateTransform> </MediaElement.RenderTransform> </MediaElement> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Windows.Media.Animation; namespace SoundAndVideo { public partial class AnimatedVideoWindow : System.Windows.Window { public AnimatedVideoWindow() { InitializeComponent(); } private void cmdPlayCode_Click(object sender, RoutedEventArgs e) { MediaTimeline timeline = new MediaTimeline(new Uri("test.mpg", UriKind.Relative)); timeline.RepeatBehavior = RepeatBehavior.Forever; MediaClock clock = timeline.CreateClock(); MediaPlayer player = new MediaPlayer(); player.Clock = clock; VideoDrawing videoDrawing = new VideoDrawing(); videoDrawing.Rect = new Rect(150, 0, 100, 100); videoDrawing.Player = player; DrawingBrush brush = new DrawingBrush(videoDrawing); this.Background = brush; clock.Controller.Begin(); } } }