Exemple #1
0
        public static Shape DrawPoint(this Canvas canvas, Joint joint, CoordinateMapper mapper, SpaceMode mode, Brush brush)
        {
            Shape shapeToReturn = null;

            // 0) Check whether the joint is tracked.
            if (joint.TrackingState == TrackingState.NotTracked)
            {
                return(null);
            }

            SpacePointBase spPt;

            switch (mode)
            {
            case SpaceMode.Color:
            default:
                // 1a) Convert Joint positions to Color space coordinates.
                ColorSpacePoint colSpaceJoint = mapper.MapCameraPointToColorSpace(joint.Position);
                spPt = new SpacePointBase(colSpaceJoint);

                break;

            case SpaceMode.Depth:
                // 1b) Convert Joint positions to Depth space coordinates.
                DepthSpacePoint depSpacePoint = mapper.MapCameraPointToDepthSpace(joint.Position);
                spPt = new SpacePointBase(depSpacePoint);

                break;
            }


            #region Joint Mapping Messages

            if (spPt.X == float.NegativeInfinity || spPt.Y == float.NegativeInfinity)
            {
                //Debug.WriteLine($"Joint Mapping Error: Joint[{joint.JointType.ToString()}] ( {spPt.X} , {spPt.Y} )");
            }
            else if ((spPt.X < 0 || spPt.Y < 0 || spPt.X > FrameDimensions[mode].Item1 || spPt.Y > FrameDimensions[mode].Item2))
            {
                //Debug.WriteLine($"Joint Mapping Overflow: Joint[{joint.JointType.ToString()}] ( {spPt.X} , {spPt.Y} )");
            }

            #endregion


            //-inf meaning Joint is not detected and no corresponding mapped space point
            if (spPt.IsValid)
            {
                // 2) Scale the mapped coordinates to window dimensions.
                spPt = spPt.ScaleTo(canvas.ActualWidth, canvas.ActualHeight, mode);
                //if (joint.JointType == 0) Debug.WriteLine($"Head Position in Color Space = {spPt.X}, {spPt.Y}");

                // 3) Draw the point on Canvas
                shapeToReturn = spPt.DrawPoint(canvas, brush);
            }

            return(shapeToReturn);
        }