Как переместить картинку туда, где курсор щелкнул на холсте - PullRequest
0 голосов
/ 01 января 2019

У меня есть изображение персонажа, и я хочу иметь возможность переместить его в положение, где мой / пользовательский курсор нажимает на моем холсте.например, если пользователь нажал на середину экрана, я бы хотел, чтобы его животное ходило туда постепенно (с определенной скоростью).Кто-нибудь знает, как мне этого добиться?

1 Ответ

0 голосов
/ 02 января 2019

Как переместить картинку туда, где курсор щелкнул на холсте

По вашему требованию вы можете создать DoubleAnimation для изображения.Вы можете получить позицию щелчка курсора с событием PointerPressed, а затем передать значение позиции X, Y в DoubleAnimation ToProperty.Я создал образец, на который вы могли бы ссылаться.

Код позади

public MainPage()
{
    this.InitializeComponent();
    RootCanvasLayout.PointerPressed += new PointerEventHandler(Pointer_Pressed);
}

private void Pointer_Pressed(object sender, PointerRoutedEventArgs e)
{
    Windows.UI.Input.PointerPoint currentPoint = e.GetCurrentPoint(RootCanvasLayout);
    CreateAnimation(currentPoint);
}
void CreateAnimation(PointerPoint point)
{  var duration = new Duration(TimeSpan.FromMilliseconds(1000));
    DoubleAnimation doubleAnimationX = new DoubleAnimation();
    DoubleAnimation doubleAnimationY = new DoubleAnimation();
    doubleAnimationX.To = point.Position.X-Pic.ActualWidth/2;
    doubleAnimationX.Duration = duration;
    doubleAnimationY.To = point.Position.Y-Pic.ActualHeight/2;
    doubleAnimationY.Duration = duration;
    var conStoryboard = new Storyboard();
    conStoryboard.Children.Add(doubleAnimationX);
    conStoryboard.Children.Add(doubleAnimationY);
    Storyboard.SetTarget(doubleAnimationX, Pic);
    Storyboard.SetTarget(doubleAnimationY, Pic);
    Storyboard.SetTargetProperty(doubleAnimationX, "(Canvas.Left)");
    Storyboard.SetTargetProperty(doubleAnimationY, "(Canvas.Top)");
    conStoryboard.Begin();
}

Xaml

<Canvas Name="RootCanvasLayout" Background="Ivory">
    <Image Name="Pic" Width="100" Height="100"
           Source="Assets/hello.png" 
           Canvas.Left="0"
           Canvas.Top = "0"/>
</Canvas>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...