在Awesomium浏览器中,kinectregionhandpointer游标作为鼠标游标

本文关键字:游标 鼠标 kinectregionhandpointer Awesomium 浏览器 | 更新日期: 2023-09-27 18:15:59

我想使用kinect的手部光标作为"普通"鼠标光标。具体来说,我希望能够与Awesomium浏览器对象进行交互。

问题是,当kinect手光标位于链接上,或者我点击鼠标,或者任何其他典型的鼠标事件时,Awesomium Browser事件都不会被触发。

我修改了Control Basics-WPF示例程序,您可以在Kinect SDK的示例目录中找到

我使用c# visual studio 2012, Kinect SDK 1.7, Awesomium 1.7.1.

在Awesomium浏览器中,kinectregionhandpointer游标作为鼠标游标

这个问题已经问了一个月了,所以也许你已经找到了自己的解决方案。

无论如何,我发现自己也遇到了这种情况,下面是我的解决方案:

在主窗口。你需要在kinectreregion中使用Awesomium控件(来自SDK)。

你必须以某种方式告诉SDK你想要一个控件来处理手事件。您可以通过在Window_Loaded处理程序的MainWindow.xaml.cs中添加以下内容来实现:

KinectRegion.AddHandPointerMoveHandler(webControl1, OnHandleHandMove);
KinectRegion.AddHandPointerLeaveHandler(webControl1, OnHandleHandLeave);

在MainWindow.xaml.cs的其他地方,您可以定义手处理程序事件。顺便说一句,我是这样做的:

    private void OnHandleHandLeave(object source, HandPointerEventArgs args)
    {
        // This just moves the cursor to the top left corner of the screen.
        // You can handle it differently, but this is just one way.
        System.Drawing.Point mousePt = new System.Drawing.Point(0, 0);
        System.Windows.Forms.Cursor.Position = mousePt;
    }
    private void OnHandleHandMove(object source, HandPointerEventArgs args)
    {
        // The meat of the hand handle method.
        HandPointer ptr = args.HandPointer;
        Point newPoint = kinectRegion.PointToScreen(ptr.GetPosition(kinectRegion));
        clickIfHandIsStable(newPoint); // basically handle a click, not showing code here
        changeMouseCursorPosition(newPoint); // this is where you make the hand and mouse positions the same!
    }
    private void changeMouseCursorPosition(Point newPoint)
    {
        cursorPoint = newPoint;
        System.Drawing.Point mousePt = new System.Drawing.Point((int)cursorPoint.X, (int)cursorPoint.Y);
        System.Windows.Forms.Cursor.Position = mousePt;
    }

对我来说,棘手的部分是:1. 深入研究SDK并找出要添加哪些处理程序。文档在这方面没有太大帮助。2. 将鼠标光标映射到kinect手。正如你所看到的,它涉及到处理System.Drawing.Point(独立于另一个库的Point)和System.Windows.Forms.Cursor(独立于另一个库的Cursor)。