我无法弄清楚如何在运行时移动 WPF 形状。具体来说,我想移动一个椭圆。
这是我当前的代码:
private void Tick(object sender, EventArgs e)
{
Point ballLocation = ball.TransformToAncestor(Application.Current.MainWindow).Transform(new Point(0, 0));
//MessageBox.Show(ballLocation.ToString());
Canvas.SetLeft(ball, ballLocation.X + 5);
InvalidateVisual();
}
每次计时器滴答(1 秒),球应该在 x 方向移动 5 个像素,对吗?如果这是错误的,如何获取 Ellipse 的当前位置以及如何将其设置为新位置。也许 InvalidateVisual 有问题?我相信这基本上会重新绘制控件。如果这是错误的,我如何重新绘制椭圆以显示其位置的变化。我也试过ball.InvalidateVisual(),它没有用。
这就是我创建和启动计时器的方式:
var timer = new DispatcherTimer {IsEnabled = true};
timer.Tick += Tick;
timer.Interval = new TimeSpan(0, 0, 1);
timer.Start();