Microsoft.Samples.Kinect.SkeletonBasics.Paddle.Draw C# (CSharp) Method

Draw() public method

public Draw ( System.Windows.Media.DrawingContext dc ) : void
dc System.Windows.Media.DrawingContext
return void
        public void Draw(DrawingContext dc)
        {
            dc.DrawRectangle(this.Color, null, new Rect(x, y, w, h));
        }

Usage Example

Example #1
0
        /// <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));
            }
        }