Skip to content

Instantly share code, notes, and snippets.

@IsaacGonzalez
Created November 22, 2013 01:14
Show Gist options
  • Save IsaacGonzalez/7593034 to your computer and use it in GitHub Desktop.
Save IsaacGonzalez/7593034 to your computer and use it in GitHub Desktop.
using Inercy.Kinect.Handlers;
using Microsoft.Kinect;
using Microsoft.Kinect.Toolkit;
using Microsoft.Kinect.Toolkit.Controls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Inercy.Kinect.Controls;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
namespace KinectApplication
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private KinectSensorChooser kinectSensorChooser;
private KinectStateHandler kinectStateHandler;
private SkeletonStateHandler skeletonStateHandler;
private GestureStateHandler gestureStateHandler;
private AllFramesStateHandler allFramesStateHandler;
private UserLocator locator;
public MainWindow()
{
InitializeComponent();
StartUpKinectSensorChooser();
kinectStateHandler = KinectStateHandler.Instance;
kinectStateHandler.OnSkeletonFrameReady += kinectStateHandler_OnSkeletonFrameReady;
kinectStateHandler.OnAllFramesReady += kinectStateHandler_OnAllFramesReady;
skeletonStateHandler = SkeletonStateHandler.Instance;
gestureStateHandler = GestureStateHandler.Instance;
allFramesStateHandler = AllFramesStateHandler.Instance;
//locator = new UserLocator(skeletonStateHandler);
//locator.VerticalAlignment = VerticalAlignment.Bottom;
//stack.Children.Add(locator);
screensaver.AddMediaelement(new ScreenSaverImage("Rectoría", "Edificio de rectoría en Mexicali", ToBitmapImage(KinectApplication.Properties.Resources.rectoria)));
screensaver.AddMediaelement(new ScreenSaverImage("Puente", "Puente hacia el campus de UABC Ensenada", ToBitmapImage(KinectApplication.Properties.Resources.bridge)));
screensaver.AddMediaelement(new ScreenSaverImage("Danza", "Estudiantes de danza arabe en la facultad de artes", ToBitmapImage(KinectApplication.Properties.Resources.arabe)));
screensaver.AddMediaelement(new ScreenSaverImage("Diseño", "El diseño dice presente en el edificio de la facultad de arquitectura y diseño", ToBitmapImage(KinectApplication.Properties.Resources.fad)));
// screensaver.AddMediaelement(new ScreenSaverAudio("Audio 1", "Descripcion Audio", "C:/Users/Isaac/Desktop/swoosh.wav"));
// screensaver.AddMediaelement(new ScreenSaverVideo("Video 1", "Descripcion Video", "C:/Users/Isaac/Videos/ing-computacion.wmv"));
screensaver.TimerDelay = 1;
screensaver.Start();
}
private BitmapImage ToBitmapImage(Bitmap bitmap)
{
using (MemoryStream memory = new MemoryStream())
{
bitmap.Save(memory, ImageFormat.Png);
memory.Position = 0;
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memory;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
return bitmapImage;
}
}
void kinectStateHandler_OnAllFramesReady(object sender, AllFramesReadyEventArgs e)
{
allFramesStateHandler.UpdateAllFrames(sender, e);
}
private void StartUpKinectSensorChooser()
{
kinectSensorChooser = new KinectSensorChooser();
kinectSensorChooser.KinectChanged += kinectSensorChooser_KinectChanged;
kinectSensorChooserUI.KinectSensorChooser = kinectSensorChooser;
kinectSensorChooser.Start();
}
void kinectSensorChooser_KinectChanged(object sender, KinectChangedEventArgs e)
{
kinectRegion.KinectSensor = kinectStateHandler.ManageKinectSensorChange(e);
if (kinectRegion.KinectSensor == null) return;
}
public void kinectStateHandler_OnSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
if (skeletonFrame == null) return;
// Aquí actualizamos la información de los esqueletos
skeletonStateHandler.UpdateSkeletonData(sender, e);
Skeleton player = skeletonStateHandler.GetSkeletonIfPorcentageOfTrackedJointsIsMoreThan(40.0);
if (player == null) return;
if(skeletonStateHandler.SkeletonPosition != null)
Coordinates.Text = skeletonStateHandler.SkeletonPosition.ToString();
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
kinectStateHandler.StopKinect(kinectSensorChooser.Kinect);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
StartUpKinectSensorChooser();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment