Kinect サンプルで提供されている KinectSkeletonViewer コントロールを変更したいと考えています。スケルトン (追跡されたボーン) の色を変更するプロパティを公開したいと考えています。
私は何をする必要がありますか?
Kinect サンプルで提供されている KinectSkeletonViewer コントロールを変更したいと考えています。スケルトン (追跡されたボーン) の色を変更するプロパティを公開したいと考えています。
私は何をする必要がありますか?
2つのファイルを変更する必要があります-KinectSkeleton.cs
とKinectSkeletonViewer.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); }
}
次に、バインディングをリンクします。KinectSkeletonViewerのOnLoad
場合-
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に置き換えられます(大文字TrackedJointBrush
とTrackedBonePen
小文字を区別してください)。次に、ハードコードされた変数をコメントアウトできます。
KinectSkeletonViewer
これで、XAMLで宣言するときに、これら2つのプロパティをバインドできるようになります。
KinectSkeleton
クラスで定義されている他の色がいくつかあります。上記と同じ概念を使用して、それらをバインドすることもできます。