Exemplo n.º 1
0
        protected override void OnPaint(PaintEventArgs e)
        {
            if (_guiDictionary == null)
            {
                return;
            }
            InputImageGui gui = _guiDictionary[_inputDisplayType];

            e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;

            Rectangle scaledRect = new Rectangle(new Point(), Size).Zoom(gui.ControllerImage.Value.Size);

            e.Graphics.DrawImage(gui.ControllerImage.Value, scaledRect);

            InputFrame inputs = _currentInputs;

            if (inputs == null)
            {
                return;
            }

            foreach (var input in Enum.GetValues(typeof(InputConfig.ButtonMask)))
            {
                if (inputs.IsButtonPressed((InputConfig.ButtonMask)input) &&
                    gui.ButtonImages.TryGetValue((InputConfig.ButtonMask)input, out Lazy <Image> img))
                {
                    e.Graphics.DrawImage(img.Value, scaledRect);
                }
            }

            float controlStickOffsetScale = GetScale(_inputDisplayType);
            float hOffset = inputs.ControlStickH * controlStickOffsetScale * scaledRect.Width;
            float vOffset = inputs.ControlStickV * controlStickOffsetScale * scaledRect.Width;

            RectangleF controlStickRectange = new RectangleF(scaledRect.X + hOffset, scaledRect.Y - vOffset, scaledRect.Width, scaledRect.Height);

            e.Graphics.DrawImage(gui.ControlStickImage.Value, controlStickRectange);
        }