2014-09-26 97 views
0

我试图做一些简单的应用程序,它允许你在画布上作画用你的右手。 幸运的是我知道如何使绘画功能,但我有一个小问题与其他事情。 如您所知,SDK提供您使用名为KinectRegion的控件,该控件具有KinectCursor,它是用户的手的表示。Kinect的油漆 - 专人跟踪C#,Kinect的SDK 1.7

的问题是,我不知道为什么,当我想画的东西我画的路径在不同的位置比我KinectCursor是开始?

我没有这个问题时,我用我自己的右手映射功能,但在这种情况下,我不能用其他的东西像KinectCircleButton因为我没有KinectRegion。

任何人都知道如何或从KinectRegion映射KinectCursor位置(X,Y)?

可视化我的问题: [IMG] http://i58.tinypic.com/iqgemt.png[/IMG]

回答

0

我的工作与Kinect的画类似的项目。其实你需要的位置是在HandPointer中。你可以通过一个名为GetPosition(UIElement元素)的方法来获得你的手相对于UIElement的位置,这个方法显然将该元素作为参数。

使用方法的一个例子是这样的:

public partial class MainWindow 
{ 
    public Point position; 

    public MainWindow 
    { 
     KinectRegion.AddHandPointerMoveHandler(this, OnHandPointerMove); 
    } 

    private void OnHandPointerMove(object sender, HandPointerEventArgs e) 
    { 
     position = e.HandPointer.GetPosition(myCanvas); 
    } 
} 
+0

感谢您的关注,但为getPosition方法不会给我HandPointer X和屏幕 – KinectUser 2014-09-29 08:11:57

+0

位置Y坐标被保存并在每次移动时的手的变量“位置”进行更新。如果您想在屏幕上看到它,请在主窗口中创建一个标签,并使用“myLabel.Content = position.X +”,“+ position.Y;”在同一事件处理程序中更新其内容。 – 2014-09-30 08:38:15

+0

我觉得你不理解我,因为如果我用CoordinateMapper方法我将在左上角屏幕(例如这将是0,0和右下角我右手的X和Y值它将是1366,768),但HandPointer的X和Y值将在左上角0,0和右下角1,1 – KinectUser 2014-10-01 09:04:40

0

现在就是你的手的位置和Kinect手的位置具有在X差距和Y尽量让这些差距为零。然后你的手将精确地绘制绘画点。例如,对于手点和绘画笔刷点,一次输出x,y坐标。并获得x坐标和y坐标的单独间隙。现在这些差异应该分别从x和y中扣除。那么你的手和油漆刷点将相应地映射。