1

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

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

如何以正确的方式做到这一点?你对我有什么建议吗?

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

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

1 回答 1

1

首先确保您的对象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;

骨架数据

您可以像颜色数据、Enable()流、处理传入的数据SkeletonFrameReady并将所有数据保存在ViewModel. 通过这样做,您可以将数据绑定到这些属性。

于 2013-04-02T11:15:20.850 回答