0

我试图在每次发生事件时调用一个函数。在 KinectRegion 类中有一个名为 HandPointerGrip 的事件:http: //msdn.microsoft.com/en-us/library/microsoft.kinect.toolkit.controls.kinectregion.handpointergrip.aspx

我看到它已经声明了该事件,并且在我看来该事件已被设置为调用(HandPointerEventArgs)?如何将功能附加到此事件?

public Menu()
{
    KinectRegion.HandPointerGripEvent+=Hand_Gripped; // why doesn't this work? :(
}    

private void Hand_Gripped(object sender, HandPointerEvnetArgs e)
{
    MessageBox.Show("I work!"); // I wish this would work
}

一直在努力解决这个问题,我认为这是可行的。害怕测试它。学习了很多关于路由事件、委托和事件的知识。

namespace ...
{
    public delegate void HandPointerEventHandler(object sender, HandPointerEventArgs e);
    public partial class thePage : Page
    {
        public event HandPointerEventHandler HandGripped
        {
            add {this.AddHandler(KinectRegion.HandPointerGripEvent,value);}
            remove {this.RemoveHandler(KinectRegion.HandPointerGripEvent,vlaue);}
        }

        public thePage()
        {
            InitializeComponent();
            this.HandGripped += new HandPointerEventHandler(OnHandGripped);
        }

        protected virtual void OnHandGripped(object sender, HandPointerEventArgs e)
        {
            MessageBox.Show("hello"); //hopefully
        }
    }
}
4

2 回答 2

0

第一个代码块应该可以正常工作。我的猜测是 HandPointerGripEvent 连接好,它只是永远不会触发。

你是如何设置 KinectRegion 的?您是否在每帧更新交互库?

也许这有帮助? Kinect SDK 1.7:将关节/光标坐标映射到屏幕分辨率

于 2013-07-19T10:02:36.697 回答
0
KinectRegion.AddHandPointerGripHandler(this.Button1, this.Button1_Click);

这里Button1是:

< k:KinectTileButton x:Name="Button1" Height="150" Width="150" Content="Click"/ >

命名空间:

  • xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  • xmlns:k="http://schemas.microsoft.com/kinect/2013"

Button1_Click是方法本身,例如:

private void Button1_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("YOU GOT ME !!!");
}

如果要为另一个界面对象添加夹点处理程序,只需执行以下操作:

KinectRegion.AddHandPointerGripHandler(< object name >, < method name >);

所以

于 2014-03-27T15:11:28.687 回答