Я хочу изменить элемент управления KinectSkeletonViewer, предоставленный в примерах Kinect. Я хочу выставить свойство для изменения цвета скелета (отслеживаемые кости).
Что я должен сделать?
Я хочу изменить элемент управления KinectSkeletonViewer, предоставленный в примерах Kinect. Я хочу выставить свойство для изменения цвета скелета (отслеживаемые кости).
Что я должен сделать?
Вам нужно будет изменить два файла — 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); }
}
Теперь вы хотите связать привязку. В событии OnLoad
KinectSkeletonViewer -
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
в приведенных выше примерах заменены на TrackedJointBrush
и TrackedBonePen
(обратите внимание на регистр). Затем вы можете закомментировать жестко закодированные переменные.
Теперь вы сможете связать эти два свойства в KinectSkeletonViewer
при объявлении их в XAML.
В классе KinectSkeleton
определено несколько других цветов. Вы можете использовать ту же концепцию, что и выше, чтобы связать их.
<kt:SkeletonViewer BoneColor="Red">
- person Nicholas Pappas   schedule 22.11.2012