Анимационный прямоугольник: метод расширения должен быть определен в неуниверсальном статическом классе - PullRequest
0 голосов
/ 23 ноября 2018

Пока это то, что у меня есть:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void TestMouseDown(object sender, MouseButtonEventArgs e)
    {
        MoveTo(imageTest, 100, 100);
    }
    public static void MoveTo(this Image target, double newX, double newY)
    {
        var top = Canvas.GetTop(target);
        var left = Canvas.GetLeft(target);
        TranslateTransform trans = new TranslateTransform();
        target.RenderTransform = trans;
        DoubleAnimation anim1 = new DoubleAnimation(top, newY - top,     TimeSpan.FromSeconds(10));
        DoubleAnimation anim2 = new DoubleAnimation(left, newX - left, TimeSpan.FromSeconds(10));
        trans.BeginAnimation(TranslateTransform.XProperty, anim1);
        trans.BeginAnimation(TranslateTransform.YProperty, anim2);
    }
}

Код ошибки

Метод расширения должен быть определен в неуниверсальном статическом классе

Идея состоит в том, чтобы просто переместить прямоугольник с помощью анимации / таймера, однако использование WPF усложнит задачу, поэтому любая помощь или даже более эффективные способы будут полезны!

1 Ответ

0 голосов
/ 23 ноября 2018

Поскольку вы ожидаете this Image в качестве параметра в MoveTo, он рассматривает этот метод как метод расширения.Подробнее здесь .Попробуйте это:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void TestMouseDown(object sender, MouseButtonEventArgs e)
    {
        MoveTo(imageTest, 100, 100);
    }
    public static void MoveTo(UIElement target, double newX, double newY)
    {
        //Your code
    }
}
...