public static void DrawLine(this Canvas canvas, Joint first, Joint second, CoordinateMapper mapper, SpaceMode mode) { if (first.TrackingState == TrackingState.NotTracked || second.TrackingState == TrackingState.NotTracked) { return; } SpacePointBase myFirstPoint; SpacePointBase mySecondPoint; switch (mode) { case SpaceMode.Color: default: myFirstPoint = new SpacePointBase(mapper.MapCameraPointToColorSpace(first.Position)); mySecondPoint = new SpacePointBase(mapper.MapCameraPointToColorSpace(second.Position)); break; case SpaceMode.Depth: myFirstPoint = new SpacePointBase(mapper.MapCameraPointToDepthSpace(first.Position)); mySecondPoint = new SpacePointBase(mapper.MapCameraPointToDepthSpace(second.Position)); break; } //Both points that the line joins must be mapped correctly if ( (!float.IsNegativeInfinity(myFirstPoint.X) && !float.IsNegativeInfinity(myFirstPoint.Y)) || (!float.IsNegativeInfinity(mySecondPoint.X) && !float.IsNegativeInfinity(mySecondPoint.Y)) ) { myFirstPoint = myFirstPoint.ScaleTo(canvas.ActualWidth, canvas.ActualHeight, mode); mySecondPoint = mySecondPoint.ScaleTo(canvas.ActualWidth, canvas.ActualHeight, mode); //call static DrawLine from class SpacePointBae SpacePointBase.DrawLine(canvas, myFirstPoint, mySecondPoint); } }
public static Shape DrawLine(this Canvas canvas, Joint first, Joint second, CoordinateMapper mapper, SpaceMode mode, double thickness, Brush brush) { Shape lineToReturn = null; if (first.TrackingState == TrackingState.NotTracked || second.TrackingState == TrackingState.NotTracked) { return(null); } SpacePointBase myFirstPoint; SpacePointBase mySecondPoint; switch (mode) { case SpaceMode.Color: default: myFirstPoint = new SpacePointBase(mapper.MapCameraPointToColorSpace(first.Position)); mySecondPoint = new SpacePointBase(mapper.MapCameraPointToColorSpace(second.Position)); break; case SpaceMode.Depth: myFirstPoint = new SpacePointBase(mapper.MapCameraPointToDepthSpace(first.Position)); mySecondPoint = new SpacePointBase(mapper.MapCameraPointToDepthSpace(second.Position)); break; } //Both points that the line joins must be mapped correctly if (myFirstPoint.IsValid && mySecondPoint.IsValid) { myFirstPoint = myFirstPoint.ScaleTo(canvas.ActualWidth, canvas.ActualHeight, mode); mySecondPoint = mySecondPoint.ScaleTo(canvas.ActualWidth, canvas.ActualHeight, mode); //call static DrawLine from class SpacePointBae lineToReturn = SpacePointBase.DrawLine(canvas, myFirstPoint, mySecondPoint, thickness, brush); } return(lineToReturn); }