Created
November 22, 2013 01:14
-
-
Save IsaacGonzalez/7593034 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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