0

我(从字面上看)想使用 Kinect 的 NUI 捕获框架元素。假设我的网格(或画布)上有一个椭圆,我应该能够使用我的程序选择一个椭圆。

为了做到这一点,我认为我必须确定元素的确切位置,就像Transform.Position在 Unity 中一样,但我在 WPF 中找不到这样的东西。

这是我的 XAML 代码,

<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
    <my:KinectSensorChooser HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="kinectSensorChooser1" />
    <my:KinectColorViewer Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  Name="kinectColorViewer1" Kinect="{Binding Path=Kinect, ElementName=kinectSensorChooser1}" />
    <Ellipse Height="114"  Name="ellipse1" Stroke="Black" Fill="Black" VerticalAlignment="Top" Width="120" />
</Grid>

所以我的问题是关于在网格上找到那个元素。拥有 Cursor 或代表用户手的任何元素都不是问题。但在那之后,我将不得不检测我的光标和这些元素之间的碰撞以及困扰我的部分。像 ElementHover 或 ElementPicked 这样的事件也会有所帮助,但我想我必须自己编写类似的东西。

顺便说一句,这是一个“工程教育软件”项目,旨在为工程练习开发虚拟环境,如昂贵或危险的实验。

4

1 回答 1

2

SDK v1.6 Toolkit 中提供了来自 Microsoft 的几个示例,这些示例说明了如何确定屏幕上对象的位置并使用代表玩家手的自定义光标与它们进行交互。

我建议查看提供的几个示例,以便清楚地了解交互如何工作。该工具包与 Office Kinect for Windows SDK 位于同一位置。

http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx

形状游戏

此示例生成从窗口顶部落下的随机形状(其中一些是椭圆)。这些形状与 Kinect 生成的骨架相互作用。您将看到如何获取窗口中元素的位置以及与骨架的关系。

基本交互

这个例子做了几件有用的事情。它展示了如何根据手的位置生成自定义光标。它还创建了一个ContentControl可以连接到 Kinect 事件(例如手进入、悬停和退出事件)的事件。它是以这种方式构建的,因为它ContentControl可以放入任何东西——无论是单个椭圆,还是复杂的布局。

于 2012-11-03T15:46:25.787 回答