diff --git a/Sources/Lib/ColorImageStream.cs b/Sources/Lib/ColorImageStream.cs index 4de3e46..75ddd64 100644 --- a/Sources/Lib/ColorImageStream.cs +++ b/Sources/Lib/ColorImageStream.cs @@ -23,7 +23,7 @@ namespace Lib var frameDescription = KinectManager.Sensor.ColorFrameSource.CreateFrameDescription(ColorImageFormat.Bgra); this.Bitmap = new WriteableBitmap(frameDescription.Width, frameDescription.Height, 96.0, 96.0, PixelFormats.Bgr32, null); reader = KinectManager.Sensor.ColorFrameSource.OpenReader(); - reader.FrameArrived += Reader_FrameArrived; + reader.FrameArrived += Reader_ColorFrameArrived; } public override void Stop() @@ -33,10 +33,9 @@ namespace Lib reader.Dispose(); reader = null; } - base.Stop(); } - private void Reader_FrameArrived(object sender, ColorFrameArrivedEventArgs e) + private void Reader_ColorFrameArrived(object sender, ColorFrameArrivedEventArgs e) { using (var colorFrame = e.FrameReference.AcquireFrame()) { diff --git a/Sources/Lib/DepthImageStream.cs b/Sources/Lib/DepthImageStream.cs index fde4b21..1cdafd9 100644 --- a/Sources/Lib/DepthImageStream.cs +++ b/Sources/Lib/DepthImageStream.cs @@ -74,7 +74,6 @@ namespace Lib reader.Dispose(); reader = null; } - base.Stop(); } private void ProcessDepthFrameData(ushort[] depthData, uint depthFrameDataSize, ushort minDepth, ushort maxDepth) diff --git a/Sources/Lib/InfraredImageStream.cs b/Sources/Lib/InfraredImageStream.cs index 51af0eb..fd0fef8 100644 --- a/Sources/Lib/InfraredImageStream.cs +++ b/Sources/Lib/InfraredImageStream.cs @@ -52,39 +52,6 @@ namespace Lib reader.Dispose(); reader = null; } - base.Stop(); - } - - private void Reader_FrameArrived(object sender, ColorFrameArrivedEventArgs e) - { - using (var colorFrame = e.FrameReference.AcquireFrame()) - { - if (colorFrame != null) - { - // ... Logique existante pour traiter la frame - //Debug.WriteLine("Traitement de la frame de couleur."); - FrameDescription infraredFrameDescription = colorFrame.FrameDescription; - - using (KinectBuffer colorBuffer = colorFrame.LockRawImageBuffer()) - { - this.Bitmap.Lock(); - - // Vérifier si la taille de l'image a changé - if ((infraredFrameDescription.Width == this.Bitmap.PixelWidth) && (infraredFrameDescription.Height == this.Bitmap.PixelHeight)) - { - colorFrame.CopyConvertedFrameDataToIntPtr( - this.Bitmap.BackBuffer, - (uint)(infraredFrameDescription.Width * infraredFrameDescription.Height * 4), - ColorImageFormat.Bgra); - - this.Bitmap.AddDirtyRect(new Int32Rect(0, 0, this.Bitmap.PixelWidth, this.Bitmap.PixelHeight)); - } - - this.Bitmap.Unlock(); - } - //Debug.WriteLine("Frame de couleur traitée."); - } - } } private void ProcessInfraredFrameData(ushort[] frameData, uint frameDataSize) { diff --git a/Sources/Lib/KinectManager.cs b/Sources/Lib/KinectManager.cs index 3486974..1d100e9 100644 --- a/Sources/Lib/KinectManager.cs +++ b/Sources/Lib/KinectManager.cs @@ -46,7 +46,7 @@ namespace Lib } public void StartSensor() { - if (sensor != null) { + if (sensor != null && !sensor.IsOpen) { sensor.Open(); } else { diff --git a/Sources/Lib/KinectStream.cs b/Sources/Lib/KinectStream.cs index 0240c81..048c7ab 100644 --- a/Sources/Lib/KinectStream.cs +++ b/Sources/Lib/KinectStream.cs @@ -47,9 +47,7 @@ namespace Lib KinectManager.StartSensor(); } - public virtual void Stop() - { - KinectManager.StopSensor(); - } + public abstract void Stop(); + } } diff --git a/Sources/WpfApp/MainWindow.xaml.cs b/Sources/WpfApp/MainWindow.xaml.cs index 9a4ba0f..56d28d8 100644 --- a/Sources/WpfApp/MainWindow.xaml.cs +++ b/Sources/WpfApp/MainWindow.xaml.cs @@ -2,6 +2,7 @@ using Microsoft.Kinect; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Text; @@ -21,7 +22,7 @@ namespace WpfApp /// /// Logique d'interaction pour MainWindow.xaml /// - public partial class MainWindow : Window + public partial class MainWindow : Window,INotifyPropertyChanged { private KinectManager kinectManager; public KinectManager KinectManager @@ -33,7 +34,16 @@ namespace WpfApp public KinectStream CurrentKinectStream { get { return _currentkinectStream; } - set { _currentkinectStream = value; } + set { + _currentkinectStream = value; + OnPropertyChanged(nameof(_currentkinectStream)); + } + } + public event PropertyChangedEventHandler PropertyChanged; + + public void OnPropertyChanged(string propertyName) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private KinectStreamsFactory _factory;