public static void DesenharEsqueletoUsuario
            (this SkeletonFrame quadro, KinectSensor kinectSensor,
            Canvas canvasParaDesenhar)
        {
            if (kinectSensor == null)
            {
                throw new ArgumentNullException("kinectSensor");
            }
            if (canvasParaDesenhar == null)
            {
                throw new ArgumentNullException("canvasParaDesenhar");
            }

            Skeleton esqueleto = ObterEsqueletoUsuario(quadro);

            if (esqueleto != null)
            {
                EsqueletoUsuarioAuxiliar esqueletoUsuarioAuxiliar = new EsqueletoUsuarioAuxiliar(kinectSensor);

                foreach (BoneOrientation osso in esqueleto.BoneOrientations)
                {
                    esqueletoUsuarioAuxiliar
                    .DesenharOsso(esqueleto.Joints[osso.StartJoint],
                                  esqueleto.Joints[osso.EndJoint],
                                  canvasParaDesenhar);

                    esqueletoUsuarioAuxiliar.DesenharArticulacao(esqueleto.Joints[osso.EndJoint], canvasParaDesenhar);
                }
            }
        }
        public static void DesenharEsqueletoUsuario
            (this SkeletonFrame quadro, KinectSensor kinectSensor,
              Canvas canvasParaDesenhar)
        {
            if (kinectSensor == null) throw new ArgumentNullException("kinectSensor");
            if (canvasParaDesenhar == null) throw new ArgumentNullException("canvasParaDesenhar");

            Skeleton esqueleto = ObterEsqueletoUsuario(quadro);
            if (esqueleto != null)
            {
                EsqueletoUsuarioAuxiliar esqueletoUsuarioAuxiliar = new EsqueletoUsuarioAuxiliar(kinectSensor);

                foreach (BoneOrientation osso in esqueleto.BoneOrientations)
                {
                    esqueletoUsuarioAuxiliar
                     .DesenharOsso(esqueleto.Joints[osso.StartJoint],
                                    esqueleto.Joints[osso.EndJoint],
                                    canvasParaDesenhar);

                    esqueletoUsuarioAuxiliar.DesenharArticulacao(esqueleto.Joints[osso.EndJoint], canvasParaDesenhar);
                }
            }
        }
        private void FuncoesEsqueletoUsuario(SkeletonFrame quadro)
        {
            if (quadro == null) return;

            using (quadro)
            {
                Skeleton esqueletoUsuario = quadro.ObterEsqueletoUsuario();

                if (btnDesenhar.IsChecked)
                {
                    Skeleton[] esqueletos = new Skeleton[6];
                    quadro.CopySkeletonDataTo(esqueletos);
                    fluxoInteracao.ProcessSkeleton(esqueletos, kinect.AccelerometerGetCurrentReading(), quadro.Timestamp);
                    EsqueletoUsuarioAuxiliar esqueletoAuxiliar = new EsqueletoUsuarioAuxiliar(kinect);

                    if (configuracaoMaoDireita.DesenhoAtivo)
                        esqueletoAuxiliar.InteracaoDesenhar(esqueletoUsuario.Joints[JointType.HandRight], canvasDesenho, configuracaoMaoDireita);

                    if (configuracaoMaoEsquerda.DesenhoAtivo)
                        esqueletoAuxiliar.InteracaoDesenhar(esqueletoUsuario.Joints[JointType.HandLeft], canvasDesenho, configuracaoMaoEsquerda);
                }
                else
                {
                    foreach (IRastreador rastreador in rastreadores)
                        rastreador.Rastrear(esqueletoUsuario);

                    if (btnEsqueletoUsuario.IsChecked)
                        quadro.DesenharEsqueletoUsuario(kinect, canvasKinect);
                }
            }
        }