private void Knob_MouseMove(object sender, MouseEventArgs e) { if (!Knob.IsMouseCaptured) { return; } Point newPos = e.GetPosition(Base); Point deltaPos = new Point(newPos.X - _startPos.X, newPos.Y - _startPos.Y); double distance = Math.Round(Math.Sqrt(deltaPos.X * deltaPos.X + deltaPos.Y * deltaPos.Y)); if (distance >= canvasWidth / 2 || distance >= canvasHeight / 2) { return; } Elevator = -deltaPos.Y / 124; Aileron = deltaPos.X / 124; knobPosition.X = deltaPos.X; knobPosition.Y = deltaPos.Y; // if (Moved == null || // (!(Math.Abs(_prevAileron - Aileron) > AileronStep) && !(Math.Abs(_prevElevator - Elevator) > ElevatorStep))) // return; //Moved?.Invoke(this, new VirtualJoystickEventArgs { Aileron = Aileron, Elevator = Elevator }); BindJoystick bj = BindJoystick.getInstance(); bj.AileronCommand = Aileron; bj.ElevatorCommand = Elevator; _prevAileron = Aileron; _prevElevator = Elevator; }
public Joystick() { InitializeComponent(); Vm = BindJoystick.getInstance(); DataContext = Vm; Knob.MouseLeftButtonDown += Knob_MouseLeftButtonDown; Knob.MouseLeftButtonUp += Knob_MouseLeftButtonUp; Knob.MouseMove += Knob_MouseMove; centerKnob = Knob.Resources["CenterKnob"] as Storyboard; }