如何在Kinect交互样本中使用ViewModel传递骨骼数据

本文关键字:ViewModel 数据 Kinect 交互 样本 | 更新日期: 2023-09-27 18:06:54

我正在使用最新的SDK(1.7),并希望在其中一个示例中进行一些更改。

我有一个名为kinectattractwinwindow的项目,我想从骨骼,深度或彩色图像的数据,但我无法弄清楚如何在视图和视图模型之间传递这些数据。例如,在这个homecreenviewmodel中,我想用这个homecreenview绘制一个骨架。或者如何使用相同的项目架构显示深度或颜色数据?

如何以适当的方式去做?你有什么建议给我吗?

我已经更新了我的HomeView和ViewModel但我得到一个NullReferenceException在这里:

'this.RGBImage.DisplayImage.Source =
                BitmapSource.Create(colorFrame.Width,
                colorFrame.Height,
                96,
                96,
                PixelFormats.Bgr32,
                null,
                pixels,
                stride);'

如何在Kinect交互样本中使用ViewModel传递骨骼数据

首先要确保你的对象RGBImage和它的属性DisplayImage不是null。我使用WriteableBitmap来显示我的RGB值,因为它创建了一个WriteableBitmap对象,并将像素重写为它,以便性能更好。你可以在这里找到更多关于WriteableBitmap的信息。

你可以这样使用-

WriteableBitmap wBitmap = new WriteableBitmap(colorFrame.Width,
                                                  colorFrame.Height,
                                                  // Standard DPI
                                                  96, 96,
                                                  // Current format for the ColorImageFormat
                                                  PixelFormats.Bgr32,
                                                  // BitmapPalette
                                                  null);

为对象写入新像素-

wBitmap.WritePixels(
                // Represents the size of our image
               new Int32Rect(0, 0, colorFrame.Width, colorFrame.Height),
                // Our image data
               _pixelData,
                // How much bytes are there in a single row?
               colorFrame.Width * colorFrame.BytesPerPixel,
                // Offset for the buffer, where does he need to start
               0);

指定给你的图像控件-

this.RGBImage.DisplayImage.Source  = wBitmap;
<<p> 骨骼数据/strong>

你可以做骨骼跟踪完全相同的颜色数据,你Enable()流,处理数据进来的SkeletonFrameReady和保存所有的数据在属性在你的ViewModel。通过这样做,它使您能够对这些属性进行数据绑定。