Example #1
0
        private void Nui_Tick()
        {
            Image oldFrame = null;

            BeginInvoke(new Action(() => oldFrame = frameImage.Image));
            if (mEnabled)
            {
                Bitmap frame             = mDepth ? Nui.DepthFrame : Nui.ColourFrame;
                Func <Vector, Point> toP = v => {
                    Point p = mDepth ? Nui.SkeletonToDepth(v) : Nui.SkeletonToColour(v);
                    return(new Point(p.X - R, p.Y - R));
                };

                if (Nui.HasSkeleton)
                {
                    using (Graphics g = Graphics.FromImage(frame)) {
                        using (Pen p = new Pen(Color.Red, R / 2)) {
                            g.DrawEllipse(p, new Rectangle(toP(mHead), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mHandL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mHandR), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mWristL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mWristR), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mElbowL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mElbowL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mShoulderL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mShoulderR), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mShoulderC), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mHipC), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mHipL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mHipR), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mKneeL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mKneeR), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mAnkleL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mAnkleR), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mFootL), mSize));
                            g.DrawEllipse(p, new Rectangle(toP(mFootR), mSize));
                        }
                    }
                }

                BeginInvoke(new Action(() => {
                    frameImage.Image = frame;
                    if (oldFrame != null)
                    {
                        oldFrame.Dispose();
                    }
                }));
            }
        }