public Draw ( System.Windows.Media.DrawingContext dc ) : void | ||
dc | System.Windows.Media.DrawingContext | |
return | void |
/// <summary> /// Event handler for Kinect sensor's SkeletonFrameReady event /// </summary> /// <param name="sender">object sending the event</param> /// <param name="e">event arguments</param> private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { Skeleton[] skeletons = new Skeleton[0]; using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) { if (skeletonFrame != null) { skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength]; skeletonFrame.CopySkeletonDataTo(skeletons); } } using (DrawingContext dc = this.drawingGroup.Open()) { // Draw a transparent background to set the render size dc.DrawRectangle(Brushes.Black, null, new Rect(0.0, 0.0, RenderWidth, RenderHeight)); if (skeletons.Count(t => t.TrackingState == SkeletonTrackingState.Tracked) >= 1) { Skeleton player1 = skeletons.First(p => p.TrackingState == SkeletonTrackingState.Tracked); Skeleton player2 = skeletons.Last(p => p.TrackingState == SkeletonTrackingState.Tracked); //Console.WriteLine(player1.Position.Z.ToString()); paddleLeft.MoveTo((RenderHeight / 2 - paddleLeft.h / 2) + (player1.Position.Z - 2) * 500); paddleRight.MoveTo((RenderHeight / 2 - paddleRight.h / 2) + (player2.Position.Z - 2) * 500); //TODO change to player2 } paddleLeft.Draw(dc); paddleRight.Draw(dc); ball.Draw(dc); ball.Move(); ball.DetectCollision(paddleLeft, paddleRight); if (ball.HitRight()) { scoreLeft++; this.ScoreLeft.Text = scoreLeft.ToString(); ball.Spawn(); } if (ball.HitLeft()) { scoreRight++; this.ScoreRight.Text = scoreRight.ToString(); ball.Spawn(); } if (showSkeletons) { foreach (Skeleton skel in skeletons) { //RenderClippedEdges(skel, dc); if (skel.TrackingState == SkeletonTrackingState.Tracked) { this.DrawBonesAndJoints(skel, dc); } else if (skel.TrackingState == SkeletonTrackingState.PositionOnly) { dc.DrawEllipse( this.centerPointBrush, null, this.SkeletonPointToScreen(skel.Position), BodyCenterThickness, BodyCenterThickness); } } } // prevent drawing outside of our render area this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, RenderWidth, RenderHeight)); } }