void runtime_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { bool receivedData = false; using (SkeletonFrame SFrame = e.OpenSkeletonFrame()) { if (SFrame == null) { // The image processing took too long. More than 2 frames behind. } else { skeletons = new Skeleton[SFrame.SkeletonArrayLength]; SFrame.CopySkeletonDataTo(skeletons); receivedData = true; } } if (receivedData) { Skeleton currentSkeleton = (from s in skeletons where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault(); if (currentSkeleton != null) { //Berechnungen einfügen anglehandler.updateSkeleton(currentSkeleton); SetEllipsePosition(head, currentSkeleton.Joints[JointType.Head]); SetEllipsePosition(leftHand, currentSkeleton.Joints[JointType.HandLeft]); SetEllipsePosition(rightHand, currentSkeleton.Joints[JointType.HandRight]); } } }
protected override void OnRender(DrawingContext drawingContext) { base.OnRender(drawingContext); var currentSkeleton = this.Skeleton; // Don't render if we don't have a skeleton, or it isn't tracked if (drawingContext == null || currentSkeleton == null || currentSkeleton.TrackingState == SkeletonTrackingState.NotTracked) { return; } // Displays a gradient near the edge of the display where the skeleton is leaving the screen this.RenderClippedEdges(drawingContext); switch (currentSkeleton.TrackingState) { case SkeletonTrackingState.PositionOnly: if (this.ShowCenter) { drawingContext.DrawEllipse( this.centerPointBrush, null, this.Center, BodyCenterThickness * this.ScaleFactor, BodyCenterThickness * this.ScaleFactor); } break; case SkeletonTrackingState.Tracked: this.DrawBonesAndJoints(drawingContext); /* * * Berechnungen hier einfügen * * Console.WriteLine("Skeleton rdy!"); * */ //Console.WriteLine("Skeleton rdy!"); //skeletonAngleHandler //Console.WriteLine("SKELETON"); angleHandler.updateSkeleton(currentSkeleton); break; } }
private void runtime_AllFramesReady(object sender, AllFramesReadyEventArgs e) { bool receivedData = false; using (ColorImageFrame c = e.OpenColorImageFrame()) { if (c == null) { return; } using (SkeletonFrame sFrame = e.OpenSkeletonFrame()) { if (sFrame == null) { // The image processing took too long. More than 2 frames behind. return; } else { skeletons = new Skeleton[sFrame.SkeletonArrayLength]; sFrame.CopySkeletonDataTo(skeletons); receivedData = true; } if (receivedData) { Skeleton currentSkeleton = (from s in skeletons where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault(); if (currentSkeleton != null) { //Berechnungen einfügen anglehandler.updateSkeleton(currentSkeleton); } } c.CopyPixelDataTo(myPixelData); sFrame.CopySkeletonDataTo(skeletons); BitmapSource bs = BitmapSource.Create(640, 480, 96, 96, PixelFormats.Bgr32, null, myPixelData, 640 * 4); DrawingVisual drawingVisual = new DrawingVisual(); DrawingContext drawingContext = drawingVisual.RenderOpen(); drawingContext.DrawImage(bs, new Rect(0, 0, 640, 480)); //Rendern Pen armPen = new System.Windows.Media.Pen(new SolidColorBrush(System.Windows.Media.Color.FromRgb(255, 0, 0)), 2); Pen legPen = new System.Windows.Media.Pen(new SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 0, 255)), 2); Pen spinePen = new System.Windows.Media.Pen(new SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 255, 0)), 2); foreach (Skeleton aSkeleton in skeletons) { DrawBone(aSkeleton.Joints[JointType.HandLeft], aSkeleton.Joints[JointType.WristLeft], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.WristLeft], aSkeleton.Joints[JointType.ElbowLeft], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.ElbowLeft], aSkeleton.Joints[JointType.ShoulderLeft], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.ShoulderLeft], aSkeleton.Joints[JointType.ShoulderCenter], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.HandRight], aSkeleton.Joints[JointType.WristRight], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.WristRight], aSkeleton.Joints[JointType.ElbowRight], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.ElbowRight], aSkeleton.Joints[JointType.ShoulderRight], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.ShoulderRight], aSkeleton.Joints[JointType.ShoulderCenter], armPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.HipCenter], aSkeleton.Joints[JointType.HipLeft], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.HipLeft], aSkeleton.Joints[JointType.KneeLeft], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.KneeLeft], aSkeleton.Joints[JointType.AnkleLeft], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.AnkleLeft], aSkeleton.Joints[JointType.FootLeft], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.HipCenter], aSkeleton.Joints[JointType.HipRight], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.HipRight], aSkeleton.Joints[JointType.KneeRight], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.KneeRight], aSkeleton.Joints[JointType.AnkleRight], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.AnkleRight], aSkeleton.Joints[JointType.FootRight], legPen, drawingContext); DrawBone(aSkeleton.Joints[JointType.Head], aSkeleton.Joints[JointType.ShoulderCenter], spinePen, drawingContext); DrawBone(aSkeleton.Joints[JointType.ShoulderCenter], aSkeleton.Joints[JointType.Spine], spinePen, drawingContext); DrawBone(aSkeleton.Joints[JointType.Spine], aSkeleton.Joints[JointType.HipCenter], spinePen, drawingContext); } drawingContext.Close(); RenderTargetBitmap myTarget = new RenderTargetBitmap(640, 480, 96, 96, PixelFormats.Pbgra32); myTarget.Render(drawingVisual); videoImage.Source = myTarget; } } /*olorImageFrame c = e.OpenColorImageFrame(); * SkeletonFrame s = e.OpenSkeletonFrame(); * * if (c == null || s == null) return;*/ }