我正在制作一个游戏,其中有不同的椭圆,并且我一次只选择一个椭圆并将其移动到我按指针的位置。那我该怎么办呢? (请说出语法!)。
答案 0 :(得分:0)
您可以使用主要输入事件 - PointerMoved
和ManipulationDelta
。只需处理其中一个事件,并根据您获得的信息移动椭圆。该事件的sender
是被拖动的UIElement
(即Ellipse
)。
如果是ManipulationDelta
- 您还需要指定ManipulationMode
- 例如ManipulationMode="TranslateX,TranslateY,TranslateIntertia"
,但是您可以在每个事件上移动Ellipse
eventArgs.Delta.Translation.X/Y
。
使用PointerMoved
- 你还需要检查哪个指针移动了,是否按下了它,跟踪指针上的PointerPressed
是否最后一次在Ellipse
上提出。我不会去那里。
您可以使用几种方法移动UIElement
。
如果它在Grid
- 您可以通过设置
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;