コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }