我做了类似的事情
您需要2个参考点来计算方向盘中心的旋转和鼠标的位置,如下所示
private void Steering_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { var control = sender as Ellipse; var point = e.GetPosition(control); var centre = new Point(control.Width / 2, control.Height / 2); var vector = point - centre Steering.Angle = (Math.Atan2(vector.X,vector.Y) * 180 / Math.PI); //note default behaviour of Atan2 is Angle 0 = East and Anti Clockwise is a positive angle, //by swapping X and Y north is now 0 angle and clockwise is positive } }
那么你只需要绑定旋转
<Ellipse MouseMove="Steering_MouseMove" > <Ellipse.RenderTransform> <RotateTransform Angle="{Binding Steering.Angle}" CenterX="0.5" CenterY="0.5"/> </Ellipse.RenderTransform> </Ellipse>