如何在 SDK v1.6 提供的 KinectSkeletonViewer 中更改骨架颜色



我想更改 Kinect 示例中提供的 KinectSkeletonViewer 控件。 我想公开一个属性来更改骨架(跟踪骨骼)的颜色。

我需要做什么?

您需要修改两个文件 -KinectSkeleton.csKinectSkeletonViewer.xaml.cs。 您正在KinectSkeleton上创建绑定,但由于此类不是从查看器直接引用和调用的,因此还需要在KinectSkeletonViewer中创建直通绑定。

KinectSkeleton.cs- 创建依赖项属性:

public static readonly DependencyProperty TrackedJointBrushProperty =
DependencyProperty.Register(
"TrackedJointBursh",
typeof(Brush),
typeof(KinectSkeleton),
new FrameworkPropertyMetadata(new SolidColorBrush(Color.FromArgb(255, 68, 192, 68)), FrameworkPropertyMetadataOptions.AffectsRender));
public static readonly DependencyProperty TrackedBonePenProperty =
DependencyProperty.Register(
"TrackedBonePen",
typeof(Pen),
typeof(KinectSkeleton),
new FrameworkPropertyMetadata(new Pen(Brushes.Green, TrackedBoneThickness), FrameworkPropertyMetadataOptions.AffectsRender));

KinectSkeletonViewer- 创建依赖项属性

public static readonly DependencyProperty TrackedJointBrushProperty =
DependencyProperty.Register(
"TrackedJointBursh",
typeof(Brush),
typeof(KinectSkeletonViewer),
new PropertyMetadata(new SolidColorBrush(Color.FromArgb(255, 68, 192, 68))));
public static readonly DependencyProperty TrackedBonePenProperty =
DependencyProperty.Register(
"TrackedBonePen",
typeof(Pen),
typeof(KinectSkeletonViewer),
new PropertyMetadata(new Pen(Brushes.Green, TrackedBoneThickness)));

这两个文件中定义关联的属性:

public Brush TrackedJointBursh
{
get { return (Brush)GetValue(TrackedJointBrushProperty); }
set { SetValue(TrackedJointBrushProperty, value); }
}
public Pen TrackedBonePen
{
get { return (Pen)GetValue(TrackedBonePenProperty); }
set { SetValue(TrackedBonePenProperty, value); }
}

现在,您要链接绑定。 在KinectSkeletonViewerOnLoad事件中 -

var trackedJointBrush = new Binding("TrackedJointBrush");
trackedJointBrush.Source = this;
skeletonCanvas.SetBinding(KinectSkeleton.TrackedJointBrushProperty, trackedJointBrush);
var trackedBonePen = new Binding("TrackedBonePen");
trackedBonePen.Source = this;
skeletonCanvas.SetBinding(KinectSkeleton.TrackedBonePenProperty, trackedBonePen);

最后,您需要浏览KinectSkeleton.cs并将硬编码颜色的引用替换为新属性。 在上述示例中,trackedJointBrushtrackedBonePen- 替换为TrackedJointBrushTrackedBonePen(注意大小写)。 然后,您可以注释掉硬编码变量。

现在,当您在 XAML 中声明这两个属性时,您应该能够在KinectSkeletonViewer中绑定这两个属性。

KinectSkeleton类中还定义了其他一些颜色。 您也可以使用与上述相同的概念来绑定它们。

相关内容

  • 没有找到相关文章

最新更新