Kinect检测手指针悬停在磁贴按钮上

本文关键字:按钮 悬停 检测 手指 指针 Kinect | 更新日期: 2023-09-27 18:13:35

我试图检测悬停(如onmouseover)在磁贴按钮上,但它必须是构建在手指针。我找不到构建事件,我已经尝试过了,但它给了我一个异常(在类型"Microsoft.Kinect.Toolkit.Controls"上调用构造函数。匹配指定绑定约束的KinectUserViewer抛出异常

XAML给出异常:

 <k:KinectUserViewer k:KinectRegion.KinectRegion="{Binding ElementName=kinectRegion}"     HorizontalAlignment="Center" Height="150" VerticalAlignment="Top" Width="150"     Canvas.Left="820"/>
        <k:KinectRegion KinectSensor="{Binding Kinect, ElementName=kinectSensorChooser1}"     Height="919" Width="1920" x:Name="kinectRegion" Canvas.Top="151">

按钮是由forloop自动创建的。

CS:

public static readonly RoutedEvent HandPointerEnterEvent = EventManager.RegisterRoutedEvent(
        "HandPointerEnter", RoutingStrategy.Direct, typeof(EventHandler<HandPointerEventArgs>), typeof(KinectRegion));
    public static readonly RoutedEvent HandPointerLeaveEvent = EventManager.RegisterRoutedEvent(
        "HandPointerLeave", RoutingStrategy.Direct, typeof(EventHandler<HandPointerEventArgs>), typeof(KinectRegion));
...
 public MainWindow()
    {
        InitializeComponent();
        KinectRegion.AddHandPointerEnterHandler(this, this.OnHandPointerEnter);
        KinectRegion.AddHandPointerLeaveHandler(this, this.OnHandPointerLeave);
 ....
 private void OnHandPointerEnter(object sender, HandPointerEventArgs handPointerEventArgs)
    {
        this.Close();//Trying to see if it works
    }
    private void OnHandPointerLeave(object sender, HandPointerEventArgs handPointerEventArgs)
    {
        this.Close();//Trying to see if it works
    }

我所尝试的来自这个链接:Kinect SDK 1.7中的移交按钮事件

然而,如果我删除前两行(公共静态),程序工作,但悬停不检测。对于这些行,它将抛出异常。

基本上我首先尝试的是检测悬停,然后关闭程序(给我一个好主意,如果它工作与否)。

Thanks for the help

Kinect检测手指针悬停在磁贴按钮上

您的版本

KinectRegion.AddHandPointerEnterHandler(this, this.OnHandPointerEnter);
KinectRegion.AddHandPointerLeaveHandler(this, this.OnHandPointerLeave);

第一个参数'this'表示表单

但必须是"KinectTileButton"

我的版本-它工作。

KinectRegion.AddHandPointerEnterHandler(this.KinectTileButtonName, this.OnHandPointerEnter);
KinectRegion.AddHandPointerLeaveHandler(this.KinectTileButtonName, this.OnHandPointerLeave);