<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Canvas  >
        <Canvas.Resources>
           <!-- PathGeometry zdefiniowana wyżej jako zasob
            ponieważ będzie kilkuktornie używany-->
        <PathGeometry x:Key="AnimationPath" >
            <PathGeometry.Figures>
                <PathFigure StartPoint="0,0">
                    <PathFigure.Segments>
                        <LineSegment Point="400,100" />
                        <PolyLineSegment Points="400,100 400,50 450,50 450,150"/>
                        <ArcSegment Point="200,150" RotationAngle="45" Size="30,30" SweepDirection="Clockwise" />
                        <BezierSegment Point1="100,200" Point2="350,350" Point3="100,100" />
                    </PathFigure.Segments>
                </PathFigure>
                <PathFigure StartPoint="90,90">
                    <PathFigure.Segments>
                        <PolyBezierSegment Points="90,90 10,100 110,150"/>
                        <QuadraticBezierSegment Point1="110,150" Point2="200,300" />
                        <PolyQuadraticBezierSegment Points="200,300 210,310 220,290 230,260 1,250"/>
                    </PathFigure.Segments>
                </PathFigure>
            </PathGeometry.Figures>
        </PathGeometry>
        </Canvas.Resources>
        <!--przycisk, który będzie animowany-->
        <Button   
      Width="40" Height="40" Content="OK">
            <Button.RenderTransform>
                <TranslateTransform x:Name="TranslateTransform"  />
            </Button.RenderTransform>
            <!--wyzwalacze, uruchamianjące animację-->
            <Button.Triggers>
                <EventTrigger RoutedEvent="Path.Loaded">
                    <BeginStoryboard>
                        <Storyboard RepeatBehavior="Forever">

                            <!--animacja właściwości X transformacji TranslateTransform
                            przycisku Button (transformacja horyzontalna)
                            jako ścieżka figura PathGeometry-->
                            <DoubleAnimationUsingPath
                Storyboard.TargetName="TranslateTransform"
                Storyboard.TargetProperty="X"
                PathGeometry="{StaticResource AnimationPath}"
                Source="X" 
                Duration="0:0:10"  />

                            <!--animacja właściwości Y transformacji TranslateTransform
                            przycisku Button (transformacja werdykalna)
                             jako ścieżka figura PathGeometry-->
                            <DoubleAnimationUsingPath
                Storyboard.TargetName="TranslateTransform"
                Storyboard.TargetProperty="Y"
                PathGeometry="{StaticResource AnimationPath}"
                Source="Y" 
                Duration="0:0:10"  />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Button.Triggers>
        </Button>
        <!--dodajemy jeszcze figurę, żeby można było zobaczyć ścieżkę animacji-->
        <Path Stroke="Crimson" StrokeThickness="3" Data="{StaticResource AnimationPath}"/>           
    </Canvas>
</Page>