2012-11-22 1 views
0

Kinect 예제에서 제공되는 KinectSkeletonViewer 컨트롤을 변경하고 싶습니다. 스켈레톤 (추적 된 본)의 색상을 변경하는 속성을 공개하려고합니다.SDK v1.6에서 제공하는 KinectSkeletonViewer에서 스켈레톤 색상을 변경하는 방법

내가해야 할 일은 무엇입니까?

+0

뷰어에서 바인딩 가능한 속성을 원하십니까? 예 :'kt : SkeletonViewer BoneColor = "Red">' –

+0

@Evli 옷장 원숭이 - 예 – Ewerton

답변

0

두 파일 (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))); 

을 만드는 두 파일 관련 속성 정의

이제 바인딩을 연결하려고합니다. 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 클래스에는 몇 가지 다른 색상이 정의되어 있습니다. 위와 동일한 개념을 사용하여 바인딩 할 수도 있습니다.

+0

고마워, 이미 해 봤는데, 어떤 이유로 xaml에 속성이 표시되지 않았다. – Ewerton