بله خوشبختانه امکانش فراهم است.
می توانید از MatrixAnimationUsingPath برای این منظور استفاده کنید. در زیر یک مثال ساده رو میتوانید ببینید:
<Button MinWidth="100" Content="A Button">
<Button.RenderTransform>
<MatrixTransform x:Name="ButtonMatrixTransform">
<MatrixTransform.Matrix >
<Matrix />
</MatrixTransform.Matrix>
</MatrixTransform>
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Loaded">
<BeginStoryboard>
<Storyboard>
<MatrixAnimationUsingPath
Storyboard.TargetName="ButtonMatrixTransform"
Storyboard.TargetProperty="Matrix"
DoesRotateWithTangent="True"
Duration="0:0:5"
RepeatBehavior="Forever" >
<MatrixAnimationUsingPath.PathGeometry>
<PathGeometry
Figures="M 10,100 C 35,0 135,0 160,100 180,190 285,200 310,100"
PresentationOptions:Freeze="True" />
</MatrixAnimationUsingPath.PathGeometry>
</MatrixAnimationUsingPath>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
به قسمت Storyboard توجه کنید؛ از یک کلاس به نام MatrixAnimationUsingPath استفاده شده است که در خصوصیت PathGeometry شکل مورد نظر (مسیر مورد نظر) خود را می توانید بدهید.
حالا XAML برای اجرای انیمیشن از مسیر شما استفاده می کند. این روش برای انیمیشن های خیلی پیچیده بسیار کاربرد دارد.
**بروز رسانی:**
اگر دقت کرده باشید یک خصوصیت به نام PresentationOptions:Freeze="True" در کدها می بینید؛ این خصوصیت در صورتی وجود دارد که از فضای نام mc:Ignorable="PresentationOptions" استفاده کنید.
البته این خصوصیت در هر Container ای که تنظیم شود، باعث می شود خاصیت IsFrozen فرزندان برابر true شود.
با اینکار به WPF می گویید که شکلتان تغییر نخواهد کرد. به این ترتیب کارایی برنامه بالا می رود.
<br/>
<br/>[منبع][1]
موفق باشید
[1]: http://msdn.microsoft.com/en-us/library/aa970561.aspx