private void OnPlayPiano(FingerIdentification Fingers) { if (Fingers == null) return; foreach (var i in Enum.GetValues(typeof(FingerType))) { FingerType type = (FingerType)i; if (Fingers[type].TrackingState == FingerTrackingState.Tracked) { Dict[type].Add(Fingers[type].Position); if (Dict[type].Count > 30) { int index = Dict[type].Count - 1; if (Dict[type][index - 30].Z - Dict[type][index].Z > 0.015d) //当前点和第前30个点,指尖点击距离超过15mm { SoundPlayer soundPlayer; switch (type) { case FingerType.ThumbRight: soundPlayer = new SoundPlayer(Kinect.Joy.Properties.Resources._08___C); soundPlayer.Play(); break; case FingerType.IndexRight: soundPlayer = new SoundPlayer(Kinect.Joy.Properties.Resources._09___D); soundPlayer.Play(); break; case FingerType.MiddleRight: soundPlayer = new SoundPlayer(Kinect.Joy.Properties.Resources._10___E); soundPlayer.Play(); break; case FingerType.RingRight: soundPlayer = new SoundPlayer(Kinect.Joy.Properties.Resources._11___F); soundPlayer.Play(); break; case FingerType.LittleRight: soundPlayer = new SoundPlayer(Kinect.Joy.Properties.Resources._12___G); soundPlayer.Play(); break; } Dict[type].Clear(); } } } } }
/// <summary> /// Draw Fingertips /// </summary> /// <param name="Fingers"></param> private void OnDrawFingerTips(FingerIdentification Fingers) { if (Fingers == null) return; if (Fingers[FingerType.ThumbRight].TrackingState == FingerTrackingState.Tracked) { Ellipse ellipse = new Ellipse() { Stroke = new SolidColorBrush(FingerColor[0]), StrokeThickness = 5, Height = 10, Width = 10 }; this.Skel_Canvas.Children.Add(ellipse); Point2D position = Fingers.GetPoint2Position(FingerType.ThumbRight); Canvas.SetLeft(ellipse, position.X); Canvas.SetTop(ellipse, position.Y); } if (Fingers[FingerType.IndexRight].TrackingState == FingerTrackingState.Tracked) { Ellipse ellipse = new Ellipse() { Stroke = new SolidColorBrush(FingerColor[1]), StrokeThickness = 5, Height = 10, Width = 10 }; this.Skel_Canvas.Children.Add(ellipse); Point2D position = Fingers.GetPoint2Position(FingerType.IndexRight); Canvas.SetLeft(ellipse, position.X); Canvas.SetTop(ellipse, position.Y); } if (Fingers[FingerType.MiddleRight].TrackingState == FingerTrackingState.Tracked) { Ellipse ellipse = new Ellipse() { Stroke = new SolidColorBrush(FingerColor[2]), StrokeThickness = 5, Height = 10, Width = 10 }; this.Skel_Canvas.Children.Add(ellipse); Point2D position = Fingers.GetPoint2Position(FingerType.MiddleRight); Canvas.SetLeft(ellipse, position.X); Canvas.SetTop(ellipse, position.Y); } if (Fingers[FingerType.RingRight].TrackingState == FingerTrackingState.Tracked) { Ellipse ellipse = new Ellipse() { Stroke = new SolidColorBrush(FingerColor[3]), StrokeThickness = 5, Height = 10, Width = 10 }; this.Skel_Canvas.Children.Add(ellipse); Point2D position = Fingers.GetPoint2Position(FingerType.RingRight); Canvas.SetLeft(ellipse, position.X); Canvas.SetTop(ellipse, position.Y); } if (Fingers[FingerType.LittleRight].TrackingState == FingerTrackingState.Tracked) { Ellipse ellipse = new Ellipse() { Stroke = new SolidColorBrush(FingerColor[4]), StrokeThickness = 5, Height = 10, Width = 10 }; this.Skel_Canvas.Children.Add(ellipse); Point2D position = Fingers.GetPoint2Position(FingerType.LittleRight); Canvas.SetLeft(ellipse, position.X); Canvas.SetTop(ellipse, position.Y); } }
private void Add(FingerType type, FingerIdentification Fingers) { if (Fingers[type].TrackingState == FingerTrackingState.Tracked) { Dict[type].Add(Fingers[type].Position); } }
private void OnDrawSkeletonAndFingers(Skeleton sk, FingerIdentification Fingers) { this.Skel_Canvas.Children.Clear(); OnDrawSkeleton(sk); OnDrawFingerTips(Fingers); }