Я хотел приостановить VideoStream от Kinect. Кнопка имеет следующий код:
if (capturing==0)
{
try
{
// Signing the Event for Image frame ready
nuiRuntime.VideoFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nuiRuntime_VideoFrameReady);
nuiRuntime.DepthFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nuiRuntime_DepthFrameReady);
nuiRuntime.VideoStream.Open(ImageStreamType.Video, 2, ImageResolution.Resolution640x480, ImageType.Color);
nuiRuntime.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution320x240, ImageType.Depth);
}
catch
{
Dialogs.ShowWarning("An Error occured. Check, if the Kinect is connected properly.");
}
finally
{
capturing = 2;
}
}
else if (capturing == 1)
{
nuiRuntime.VideoFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nuiRuntime_VideoFrameReady);
nuiRuntime.DepthFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nuiRuntime_DepthFrameReady);
capturing = 2;//go on after break
}
else
{
nuiRuntime.VideoFrameReady -= new EventHandler<ImageFrameReadyEventArgs>(nuiRuntime_VideoFrameReady);
nuiRuntime.DepthFrameReady -= nuiRuntime_DepthFrameReady;
capturing = 1;//pause
}
Я не думаю, что это трудно понять.
Состояния: 0, Kinect не инициализирован, сделайте так
1, Kinect приостановлен, продолжайте
2, Kinect обычно захватывает
Но: когда выполняется «else», изображение в GUI (WPF.Image) по-прежнему показывает движущийся видеопоток. В «остальном» есть 2 способа, я пытался сделать это перерыв. Затем должно отображаться неподвижное изображение.
Конечно, я просто могу сказать EventHandler: если мы находимся в состоянии 1, просто не работаем над изображением, но я не думаю, что это чистый способ реализации.
Кто-нибудь может увидеть мою ошибку?