public SkeletonDataChangedEvent SkeletonDataChanged; // Skeleton data change protected virtual void SkeletonDataChange(SkeletonDataChangeEventArgs e) { if (SkeletonDataChanged != null) { SkeletonDataChanged(this, e); } }
// Event Handler for changes in Skeleton data // Allows for direct access to the Skeleton data private void SkeletonDataChange(object sender, SkeletonDataChangeEventArgs e) { //Get the position of the first Skeleton Skeleton skel = e.skeletons[0]; Point skelPoint = helper.SkeletonPointToScreen(skel.Position); Console.WriteLine("Skeleton 1 at (" + skelPoint.X.ToString() + "," + skelPoint.Y.ToString() + ")!"); }
// Event Handler for SkeletonFrameReady events // (A new frame of SkeletonStream data is available) private void KinectSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { // Initialize/empty the skeletonStreamData array this.skeletonStreamData = new Skeleton[0]; // Get the current SkeletonFrame and copy out the data using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) { if (skeletonFrame != null) { try { // Get the Skeleton data from the SkeletonFrame skeletonStreamData = new Skeleton[skeletonFrame.SkeletonArrayLength]; skeletonFrame.CopySkeletonDataTo(skeletonStreamData); // Dispatch the SkeletonDataChange event SkeletonDataChangeEventArgs s = new SkeletonDataChangeEventArgs(skeletonStreamData); SkeletonDataChange(s); } catch (NullReferenceException ex) { Console.WriteLine(ex.TargetSite + " - " + ex.Message); } } } // Create the Skeleton image output using (DrawingContext dc = this.drawingGroup.Open()) { // Draw a black background the size of our render dc.DrawRectangle(backgroundBrush, null, new Rect(0, 0, RenderWidth, RenderHeight)); //Draw each Skeleton if (skeletonStreamData.Length != 0) { foreach (Skeleton skeleton in skeletonStreamData) { // TO-DO: Render clipped edges if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { DrawSkeletonBonesAndJoints(dc, skeleton.Joints); } else if (skeleton.TrackingState == SkeletonTrackingState.PositionOnly) { DrawSkeletonPosition(dc, skeleton.Position); } } } // Prevent any drawing outside the render area this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0, 0, RenderWidth, RenderHeight)); } }
protected virtual void SkeletonDataChange(SkeletonDataChangeEventArgs e) { if (SkeletonDataChanged != null) { SkeletonDataChanged(this, e); } }