如何将特定椭圆移动到指针按下位置?

时间:2014-06-22 16:46:34

标签: windows windows-runtime windows-store-apps winrt-xaml

我正在制作一个游戏,其中有不同的椭圆,并且我一次只选择一个椭圆并将其移动到我按指针的位置。那我该怎么办呢? (请说出语法!)。

1 个答案:

答案 0 :(得分:0)

您可以使用主要输入事件 - PointerMovedManipulationDelta。只需处理其中一个事件,并根据您获得的信息移动椭圆。该事件的sender是被拖动的UIElement(即Ellipse)。

如果是ManipulationDelta - 您还需要指定ManipulationMode - 例如ManipulationMode="TranslateX,TranslateY,TranslateIntertia",但是您可以在每个事件上移动Ellipse eventArgs.Delta.Translation.X/Y

使用PointerMoved - 你还需要检查哪个指针移动了,是否按下了它,跟踪指针上的PointerPressed是否最后一次在Ellipse上提出。我不会去那里。

您可以使用几种方法移动UIElement

如果它在Grid - 您可以通过设置

将其移动dx,dy
ellipse.Margin = new Thickness(
    ellipse.Margin.Left + dx,
    ellipse.Margin.Top + dy,
    ellipse.Margin.Right - dx,
    ellipse.Margin.Bottom - dy);

如果它在Canvas中 - 您可以像这样移动它:

var x = Canvas.GetLeft(ellipse);
var y = Canvas.GetTop(ellipse);
Canvas.SetLeft(x + dx);
Canvas.SetTop(y + dy);

否则 - 如果您的椭圆具有RenderTransform - 例如TranslateTransform - 你会这样做:

var ellipse = (Ellipse)sender;
var tt = (TranslateTransform)ellipse.RenderTransform;
tt.X += dx;
tt.Y += dy;