Correct the Change of the streams

pull/13/head
Johan LACHENAL 1 year ago
parent e32b820538
commit 5cf8e2c872

@ -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())
{

@ -74,7 +74,6 @@ namespace Lib
reader.Dispose();
reader = null;
}
base.Stop();
}
private void ProcessDepthFrameData(ushort[] depthData, uint depthFrameDataSize, ushort minDepth, ushort maxDepth)

@ -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)
{

@ -46,7 +46,7 @@ namespace Lib
}
public void StartSensor()
{
if (sensor != null) {
if (sensor != null && !sensor.IsOpen) {
sensor.Open();
}
else {

@ -47,9 +47,7 @@ namespace Lib
KinectManager.StartSensor();
}
public virtual void Stop()
{
KinectManager.StopSensor();
}
public abstract void Stop();
}
}

@ -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
/// <summary>
/// Logique d'interaction pour MainWindow.xaml
/// </summary>
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;

Loading…
Cancel
Save