0

Kinect サンプルで提供されている KinectSkeletonViewer コントロールを変更したいと考えています。スケルトン (追跡されたボーン) の色を変更するプロパティを公開したいと考えています。

私は何をする必要がありますか?

4

1 に答える 1

0

2つのファイルを変更する必要があります-KinectSkeleton.csKinectSkeletonViewer.xaml.cs。でバインディングを作成していますKinectSkeletonが、このクラスはビューアから直接参照および呼び出されないため、でパススルーバインディングも作成する必要がありますKinectSkeletonViewer

KinectSkeleton.cs -DependencyPropertiesを作成します。

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 -DependencyPropertiesを作成します

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を調べて、ハードコードされた色の参照を新しいプロパティに置き換える必要があります。 trackedJointBrush上記のtrackedBonePen例の場合-andに置き換えられます(大文字TrackedJointBrushTrackedBonePen小文字を区別してください)。次に、ハードコードされた変数をコメントアウトできます。

KinectSkeletonViewerこれで、XAMLで宣言するときに、これら2つのプロパティをバインドできるようになります。

KinectSkeletonクラスで定義されている他の色がいくつかあります。上記と同じ概念を使用して、それらをバインドすることもできます。

于 2012-11-22T04:38:51.503 に答える