在 BeginAnimation 中指定 UIElement 的 DependencyProperty
Specify the DependencyProperty of a UIElement in a BeginAnimation
我正在尝试为椭圆设置动画,使其在 canvas 上从点 A 移动到点 B。
public void AnimateSensor(double x, double y, Ellipse sensor)
{
if (!Double.IsNaN(x))
{
DoubleAnimation animX = new DoubleAnimation();
animX.To = x;
animX.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
DoubleAnimation animY = new DoubleAnimation();
animY.To = y;
animY.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
TranslateTransform rt = new TranslateTransform();
sensor.RenderTransform = rt;
rt.BeginAnimation(sensor.GetValue(Canvas.TopProperty), animX);
rt.BeginAnimation(sensor.GetValue(Canvas.LeftProperty), animY);
}
else
Console.WriteLine("x or y is NaN");
}
我用一组坐标和一个 Ellipse 调用此方法,但是我似乎无法弄清楚如何在 BeginAnimation 中指定依赖值。我试过 'sensor.GetValue(Canvas.LeftProperty)' 但它说它是一个对象并且需要一个依赖项 属性。当我使用 'as DependencyProperty' 时,它使它变为空,当我尝试转换它时,它说你不能从 double 转换为 DependencyProperty。
您可以在没有 TranslateTransform 的情况下为椭圆的 Canvas.Left
和 Canvas.Top
属性设置动画,如下所示:
sensor.BeginAnimation(Canvas.LeftProperty, animX);
sensor.BeginAnimation(Canvas.TopProperty, animY);
或 TranslateTransform 的 X
和 Y
属性,如下所示:
if (!(sensor.RenderTransform is TranslateTransform))
{
// assign RenderTransform only once
sensor.RenderTransform = new TranslateTransform();
}
var transform = (TranslateTransform)sensor.RenderTransform;
transform.BeginAnimation(TranslateTransform.XProperty, animX);
transform.BeginAnimation(TranslateTransform.YProperty, animY);
我正在尝试为椭圆设置动画,使其在 canvas 上从点 A 移动到点 B。
public void AnimateSensor(double x, double y, Ellipse sensor)
{
if (!Double.IsNaN(x))
{
DoubleAnimation animX = new DoubleAnimation();
animX.To = x;
animX.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
DoubleAnimation animY = new DoubleAnimation();
animY.To = y;
animY.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
TranslateTransform rt = new TranslateTransform();
sensor.RenderTransform = rt;
rt.BeginAnimation(sensor.GetValue(Canvas.TopProperty), animX);
rt.BeginAnimation(sensor.GetValue(Canvas.LeftProperty), animY);
}
else
Console.WriteLine("x or y is NaN");
}
我用一组坐标和一个 Ellipse 调用此方法,但是我似乎无法弄清楚如何在 BeginAnimation 中指定依赖值。我试过 'sensor.GetValue(Canvas.LeftProperty)' 但它说它是一个对象并且需要一个依赖项 属性。当我使用 'as DependencyProperty' 时,它使它变为空,当我尝试转换它时,它说你不能从 double 转换为 DependencyProperty。
您可以在没有 TranslateTransform 的情况下为椭圆的 Canvas.Left
和 Canvas.Top
属性设置动画,如下所示:
sensor.BeginAnimation(Canvas.LeftProperty, animX);
sensor.BeginAnimation(Canvas.TopProperty, animY);
或 TranslateTransform 的 X
和 Y
属性,如下所示:
if (!(sensor.RenderTransform is TranslateTransform))
{
// assign RenderTransform only once
sensor.RenderTransform = new TranslateTransform();
}
var transform = (TranslateTransform)sensor.RenderTransform;
transform.BeginAnimation(TranslateTransform.XProperty, animX);
transform.BeginAnimation(TranslateTransform.YProperty, animY);