C# 使用XInput和VB.NET支持xbox 360控制器

C# 使用XInput和VB.NET支持xbox 360控制器,c#,vb.net,xinput,C#,Vb.net,Xinput,我想知道是否有人能在xinput(for和Xbox控制器)和vb.net方面给我一些帮助 我试图做的是将模拟的杆运动转换为应用程序中的某些事件。具体来说,我想做的是在移动操纵杆时移动地图。 是否可以将xinput与vb.net一起使用?基于应用程序的COM库,我只能使用vb或c。任何添加DLL的尝试都会向我抛出一个错误 谢谢你的帮助 干杯 您可以通过MonoGame实现这一点,下面是一个WPF应用程序读取左手拇指棒值的小示例 <Window x:Class="GamePadTest.Mai

我想知道是否有人能在xinput(for和Xbox控制器)和vb.net方面给我一些帮助

我试图做的是将模拟的杆运动转换为应用程序中的某些事件。具体来说,我想做的是在移动操纵杆时移动地图。 是否可以将xinput与vb.net一起使用?基于应用程序的COM库,我只能使用vb或c。任何添加DLL的尝试都会向我抛出一个错误

谢谢你的帮助


干杯

您可以通过MonoGame实现这一点,下面是一个WPF应用程序读取左手拇指棒值的小示例

<Window x:Class="GamePadTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock x:Name="TextBlock1"></TextBlock>
    </Grid>
</Window>

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;

namespace GamePadTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            CompositionTarget.Rendering += CompositionTarget_Rendering;
        }

        private void CompositionTarget_Rendering(object sender, EventArgs e)
        {
            var gamePadState = GamePad.GetState(PlayerIndex.One);
            TextBlock1.Text = gamePadState.ThumbSticks.Left.ToString();
        }
    }
}


使用Microsoft.Xna.Framework;
使用Microsoft.Xna.Framework.Input;
名称空间GamePadTest
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
CompositionTarget.Rendering+=CompositionTarget\u Rendering;
}
私有void CompositionTarget_呈现(对象发送方,事件参数e)
{
var gamePadState=GamePad.GetState(PlayerIndex.One);
TextBlock1.Text=gamePadState.ThumbSticks.Left.ToString();
}
}
}
我是怎么做到的

  • 已安装的MonoGame:
  • 创建了一个新的WPF项目并引用了“C:\ProgramFiles(x86)\MonoGame\v3.0\Assemblys\Windows8\MonoGame.Framework.dll”
不要忘记将SDL.DLL复制到bin\Debug,请在此处获取它:

(在Windows 8 x64+Visual Studio 2012下完成)

您还可以查看

这是一个有管理的图书馆。连接到控制器很容易:

var controller = new SharpDX.XInput.Controller(SharpDX.XInput.UserIndex.One);
if (controller.IsConnected)
{
    var state = controller.GetState();
    var x = state.Gamepad.LeftThumbX;
    var y = state.Gamepad.LeftThumbY;
}

SharpDX作为nuget软件包提供

您尝试过MonoGame吗?不,我还没有调查过。该应用程序(arcgis)基于windows,因此无需将其移植到不同的操作系统或移动设备。此外,如果直接使用DLL无法正常工作,您可以尝试创建一个“虚拟”游戏并在应用程序中引用它。SharpDX.XInput不是托管的DirectX库,而是托管的XInput库。永远不要少,有用的信息。由于这是谷歌的一个高排名结果,我认为在这里值得一提的是,SharpDX文档似乎已经损坏。实际上,您可以查看SlimDX的文档(SharpDX是SlimDX的C#实现),这非常有用。