public static void DrawJoint(this Canvas canvas, Joint joint, KinectSensor sensor) { if (joint.TrackingState == TrackingState.NotTracked) return; Color c; if (steadyFlag) c = Colors.CadetBlue; else c = Colors.SandyBrown; Boolean inferred = false; if (joint.TrackingState == TrackingState.Inferred) { c = Colors.Gray; inferred = true; } // joint = joint.ScaleTo(canvas.ActualWidth, canvas.ActualHeight); Point p = scalePoint(joint.Project(sensor), canvas.ActualWidth, canvas.ActualHeight); // Console.WriteLine("Position: " + p.X + " " + p.Y + "canvas size: " + canvas.Width + " " + canvas.Height); // WirteText(canvas, joint.Project(sensor), "Position: " + joint.Project(sensor).X + ":" + joint.Project(sensor).Y); DrawPoint(canvas, p, c, inferred); // WirteText(canvas, p, "Position: " + joint.Project(sensor).X + ":" + joint.Project(sensor).Y); }
public static void DrawBone(this Canvas canvas, Joint first, Joint second, KinectSensor sensor) { if (first.TrackingState == TrackingState.NotTracked || second.TrackingState == TrackingState.NotTracked) return; // first = first.ScaleTo(canvas.ActualWidth, canvas.ActualHeight); // second = second.ScaleTo(canvas.ActualWidth, canvas.ActualHeight); Color c; if (steadyFlag) c = Colors.LightSeaGreen; else c = Colors.Yellow; Boolean inferred = false; if (first.TrackingState == TrackingState.Inferred || second.TrackingState == TrackingState.Inferred) { c = Colors.Black; inferred = true; } Point firstP = scalePoint(first.Project(sensor), canvas.ActualWidth, canvas.ActualHeight); Point secondP = scalePoint(second.Project(sensor), canvas.ActualWidth, canvas.ActualHeight); DrawLine(canvas, firstP, secondP, c, inferred); }
private static void DrawWrongJoint(this Canvas canvas, Joint joint, KinectSensor sensor) { if (joint.TrackingState == TrackingState.NotTracked) return; Color c = Colors.Red; double alpha = 1.0; if (joint.TrackingState == TrackingState.Inferred) { alpha = 0.75; } // joint = joint.ScaleTo(canvas.ActualWidth, canvas.ActualHeight); Point p = scalePoint(joint.Project(sensor), canvas.ActualWidth, canvas.ActualHeight); if (!inCanvas(canvas, p)) return; SolidColorBrush fill = new SolidColorBrush(c); fill.Opacity = alpha; Ellipse ellipse = new Ellipse { Width = 20, Height = 20, Fill = fill }; Canvas.SetLeft(ellipse, p.X - ellipse.Width / 2); Canvas.SetTop(ellipse, p.Y - ellipse.Height / 2); canvas.Children.Add(ellipse); }