WPF XAML. Hogy lehet egy objectumot egy ellipsegeometry által meghatározott pályán mozgatni?
például:
XAML:
<Rectangle x:Name="Rectangle1"
Fill="#E0ADD8E6" Width="50" Height="50"
Canvas.Top="100"
Stroke="DarkBlue" StrokeThickness="2"
Panel.ZIndex="1">
<Rectangle.RenderTransform>
<TranslateTransform x:Name="TranslateTransform1" X="0" Y="0" />
</Rectangle.RenderTransform>
</Rectangle>
code behind. Én a window Loaded eseménykezelőjébe raktam:
var geom = new EllipseGeometry(new Point(50, 50), 50, 30);
var pathGeometry = PathGeometry.CreateFromGeometry(geom);
var propertyPathConverter = new PropertyPathConverter();
var t1 = new DoubleAnimationUsingPath
{
Duration = new Duration(TimeSpan.FromSeconds(2.0)),
Source = PathAnimationSource.X,
PathGeometry = pathGeometry,
RepeatBehavior = RepeatBehavior.Forever
};
t1.SetValue(Storyboard.TargetPropertyProperty, propertyPathConverter.ConvertFromString("(UIElement.RenderTransform).(TranslateTransform.X)"));
t1.SetValue(Storyboard.TargetProperty, Rectangle1);
var t2 = new DoubleAnimationUsingPath
{
Duration = new Duration(TimeSpan.FromSeconds(2.0)),
Source = PathAnimationSource.Y,
PathGeometry = pathGeometry,
RepeatBehavior = RepeatBehavior.Forever
};
t2.SetValue(Storyboard.TargetPropertyProperty, propertyPathConverter.ConvertFromString("(UIElement.RenderTransform).(TranslateTransform.Y)"));
t2.SetValue(Storyboard.TargetProperty, Rectangle1);
var sb1 = new Storyboard();
sb1.Children.Add(t1);
sb1.Children.Add(t2);
sb1.Begin();
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!