public static void DrawSkeletonFrame(TSkeletonFrame skeletonFrame)
        {
            using (DrawingContext dc = 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 (skeletonFrame.Skeletons.Length != 0)
                {
                    foreach (var skel in skeletonFrame.Skeletons)
                    {
                        RenderClippedEdges(skel, dc);

                        if (skel.TrackingState == TSkeletonTrackingState.Tracked)
                        {
                            DrawBonesAndJoints(skel, dc);
                        }
                        else if (skel.TrackingState == TSkeletonTrackingState.PositionOnly)
                        {
                            dc.DrawEllipse(
                                centerPointBrush,
                                null,
                                SkeletonPointToScreen(skel.Position),
                                BodyCenterThickness,
                                BodyCenterThickness);
                        }
                    }
                }

                // prevent drawing outside of our render area
                DrawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, RenderWidth, RenderHeight));
            }
        }
Beispiel #2
0
 public void TSkeletonFrameHandler(object senderm, TSkeletonFrame frame)
 {
     if (!SkeletonFrameActive)
     {
         return;
     }
     SkeletonFrameReady(this, frame);
 }
Beispiel #3
0
        public void Play(Stream stream)
        {
            _lastFrameTime = 0;
            var reader = new BinaryReader(stream);

            _cancellationTokenSource = new CancellationTokenSource();
            var cancelToken = _cancellationTokenSource.Token;

            Task.Factory.StartNew(() =>
            {
                while (reader.BaseStream.Position != reader.BaseStream.Length)
                {
                    var frameType = (TFrameType)reader.ReadInt32();
                    switch (frameType)
                    {
                    case TFrameType.TColorFrame:
                        var colorFrame = new TColorFrame();
                        colorFrame.Read(reader);
                        SpeedControll(colorFrame.Timestamp);
                        ColorFrameReady(this, colorFrame);
                        break;

                    case TFrameType.TDepthFrame:
                        var depthFrame = new TDepthFrame();
                        depthFrame.Read(reader);
                        SpeedControll(depthFrame.Timestamp);
                        DepthFrameReady(this, depthFrame);
                        break;

                    case TFrameType.TSkeletonFrame:
                        var skeletonFrame = new TSkeletonFrame();
                        skeletonFrame.Read(reader);
                        SpeedControll(skeletonFrame.Timestamp);
                        SkeletonFrameReady(this, skeletonFrame);
                        break;
                    }
                }
                reader.Close();
                reader.Dispose();

                if (ReplayEnded != null)
                {
                    ReplayEnded(this, "Ended");
                }
            }, cancelToken);
        }
Beispiel #4
0
        public virtual void OnSkeletonImageFrameReady(object sender, TSkeletonFrame skeletonImageFrame)
        {
            if (skeletonImageFrame != null)
            {
                var frame = new Frame(skeletonImageFrame);

                _frames.AddLast(frame);
                if (_frames.Count == _framesCount)
                {
                    _frames.RemoveFirst();
                }

                if (FrameReady != null)
                {
                    FrameReady(this, new FrameReadyEventArgs(_frames));
                }
            }
        }
Beispiel #5
0
        public virtual void OnSkeletonImageFrameReady(object sender, TSkeletonFrame skeletonImageFrame)
        {
            if (skeletonImageFrame != null)
            {
                var frame = new Frame(skeletonImageFrame);

                _frames.AddLast(frame);
                if (_frames.Count == _framesCount)
                {
                    _frames.RemoveFirst();
                }

                if (FrameReady != null)
                {
                    FrameReady(this, new FrameReadyEventArgs(_frames));
                }
            }
        }
Beispiel #6
0
        public void SensorSkeletonFrameHandler(object sender, SkeletonFrameReadyEventArgs e)
        {
            if (_isPlaying)
            {
                return;
            }
            if (!SkeletonFrameActive)
            {
                return;
            }

            var sensorFrame = e.OpenSkeletonFrame();

            if (sensorFrame != null)
            {
                var frame = new TSkeletonFrame(sensorFrame);
                SkeletonFrameReady(this, frame);
            }
        }
Beispiel #7
0
        public void Play(Stream stream)
        {
            _lastFrameTime = 0;
            var reader = new BinaryReader(stream);

            _cancellationTokenSource = new CancellationTokenSource();
            var cancelToken = _cancellationTokenSource.Token;

            Task.Factory.StartNew(() =>
            {
                while (reader.BaseStream.Position != reader.BaseStream.Length)
                {
                    var frameType = (TFrameType)reader.ReadInt32();
                    switch (frameType)
                    {
                        case TFrameType.TColorFrame:
                            var colorFrame = new TColorFrame();
                            colorFrame.Read(reader);
                            SpeedControll(colorFrame.Timestamp);
                            ColorFrameReady(this, colorFrame);
                            break;
                        case TFrameType.TDepthFrame:
                            var depthFrame = new TDepthFrame();
                            depthFrame.Read(reader);
                            SpeedControll(depthFrame.Timestamp);
                            DepthFrameReady(this, depthFrame);
                            break;
                        case TFrameType.TSkeletonFrame:
                            var skeletonFrame = new TSkeletonFrame();
                            skeletonFrame.Read(reader);
                            SpeedControll(skeletonFrame.Timestamp);
                            SkeletonFrameReady(this, skeletonFrame);
                            break;
                    }

                }
                reader.Close();
                reader.Dispose();

                if (ReplayEnded != null)
                    ReplayEnded(this,"Ended");
            }, cancelToken);
        }
 public static void SensorSkeletonFrameReady(object sender, TSkeletonFrame skeletonFrame)
 {
     Context.Send((gui) => DrawSkeletonFrame(skeletonFrame), null);
 }
        public static void DrawSkeletonFrame(TSkeletonFrame skeletonFrame)
        {
            using (DrawingContext dc = 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 (skeletonFrame.Skeletons.Length != 0)
                {
                    foreach (var skel in skeletonFrame.Skeletons)
                    {
                        RenderClippedEdges(skel, dc);

                        if (skel.TrackingState == TSkeletonTrackingState.Tracked)
                        {
                            DrawBonesAndJoints(skel, dc);
                        }
                        else if (skel.TrackingState == TSkeletonTrackingState.PositionOnly)
                        {
                            dc.DrawEllipse(
                            centerPointBrush,
                            null,
                            SkeletonPointToScreen(skel.Position),
                            BodyCenterThickness,
                            BodyCenterThickness);
                        }
                    }
                }

                // prevent drawing outside of our render area
                DrawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, RenderWidth, RenderHeight));
            }
        }
Beispiel #10
0
 public void TSkeletonFrameHandler(object senderm, TSkeletonFrame frame)
 {
     if (!SkeletonFrameActive) return;
     SkeletonFrameReady(this, frame);
 }
Beispiel #11
0
        public void SensorSkeletonFrameHandler(object sender, SkeletonFrameReadyEventArgs e)
        {
            if (_isPlaying) return;
            if (!SkeletonFrameActive) return;

            var sensorFrame = e.OpenSkeletonFrame();
            if (sensorFrame != null)
            {
                var frame = new TSkeletonFrame(sensorFrame);
                SkeletonFrameReady(this, frame);
            }
        }
Beispiel #12
0
 public static void SensorSkeletonFrameReady(object sender, TSkeletonFrame skeletonFrame)
 {
     Context.Send((gui) => DrawSkeletonFrame(skeletonFrame), null);
 }