操纵杆坐标

问题描述

大家好,我需要你的帮助,使用开放 TK 在 dot net framework 4.5 上使用 Xaml 我想通了。使用以下代码。我想在 Windows 窗体上复制它,但打开 TK 不喜欢窗体。我做了很多谷歌搜索,发现了 2 个选项 SlimDX 和 SharpDX directinput。我的目标是使用操纵杆通过操纵杆输入沿表单移动控件。我似乎无法像使用开放式 TK 那样复制轴 1 和轴 2。我正在寻找示例 0 或 1 和 -1,如 XAML 的 c3 清晰代码所示。

using OpenTK.Input;

private DispatcherTimer clock;
private GamePadState oldgstate;
private JoystickState oldjstate;
private int activeGamepad = 0;
private int activeJoystick = 0;


 public MainWindow()
    {
        InitializeComponent();
        createNewTimer();
        oldgstate = GamePad.GetState(activeGamepad);
        oldjstate = Joystick.GetState(activeJoystick);
    }

    //public Direction TestOpenTK.MainWindow.MyProperty { get; set; }

    private void createNewTimer() {
        clock = new DispatcherTimer();
        clock.Tick += new EventHandler(checkGamePads);
        clock.Interval = new TimeSpan(0,25);
        clock.Start();
    }

    private void checkGamePads(Object sender,EventArgs e)
    {
        var gState = GamePad.GetState(activeGamepad);
        var jState = Joystick.GetState(activeJoystick);


        if (!gState.Equals(oldgstate))
        {
            txtGamePadDebug.Text = gState.ToString();
        }

        if (!gState.Equals(oldjstate))
        {
            //txtJoystickDebug.Text = jState.ToString() + Environment.NewLine + " Axis 1 = " + jState.GetAxis(JoystickAxis.Axis1).ToString()
            //     + Environment.NewLine + " Throttle Axis 2 = " + jState.GetAxis(JoystickAxis.Axis2).ToString() + Environment.NewLine + " Axis 3 Rotation = " +
            //     jState.GetAxis(JoystickAxis.Axis3).ToString() + Environment.NewLine + " Axis 4 = " + jState.GetAxis(JoystickAxis.Axis4).ToString();
            for (int i = 0; i < 4; i++)
            {
                var state = Joystick.GetState(i);

                if (state.IsConnected)
                {

需要使用 SharpDX 或 SlimDX 获得类似的 Axis 或弄清楚如何在 windows 窗体上使用 open TK

float x = state.GetAxis(JoystickAxis.Axis0); float y = state.GetAxis(JoystickAxis.Axis1);

                    //Convert and round x and y
                    int X = (int)Math.Round(x);
                    int Y = (int)Math.Round(y);

                    //Set axis direction using integers X and Y
                    if (X == 0 && Y==1)
                    {
                        // N
                        txtJoystickDebug.Text = "North";
                    }

                    if (X == 1 && Y == 1)
                    {
                        // NE Up and right
                        txtJoystickDebug.Text = "North East";
                    }

                    if (X == 1 && Y == 0)
                    {
                        //E
                        txtJoystickDebug.Text = "East";
                    }

                    if (X == 1 && Y == -1)
                    {
                        //SE Down Right
                        txtJoystickDebug.Text = "South East";
                    }

                    if (X == 0 && Y == -1)
                    {
                        //S
                        txtJoystickDebug.Text = "South";
                    }

                    if (X == -1 && Y == -1)
                    {
                        // SW Down Left
                        txtJoystickDebug.Text = "South West";
                    }

                    if (X == -1 && Y == 0)
                    {
                        //W 
                        txtJoystickDebug.Text = "West";
                    }

                    if (X == -1 && Y == 1)
                    {
                        //NW Up or West
                        txtJoystickDebug.Text = "North West";

                    }

                    //Slider aka throttle axis
                    //float T = state.GetAxis(JoystickAxis.Axis2);

                    // Print the current state of the joystick
                    //Console.WriteLine(T);
                    //txtJoystickDebug.Text = "X = " + Math.Round(x).ToString() + Environment.NewLine + "Y = "  + Math.Round(y).ToString()
                    //    + Environment.NewLine + " Throttle = " + T.ToString();
                }
            }
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...