Kinect New Window Wpf
本文关键字:Wpf Window New Kinect | 更新日期: 2023-09-27 18:21:42
所以我用按钮制作了一个Kinect应用程序,为了导航应用程序,我为每个按钮制作了新的窗口。我遇到了一个问题,我根本找不到任何帮助,如果有任何帮助,我将不胜感激。
因此,为了打开新窗口,我使用这个:
private void button1_Click(object sender, RoutedEventArgs e)
{
//SUPPOSED to uninitialize the Kinect
UninitializeKinectSensor(this.Kinect;
//To open the new window
Window1 newwindow = new Window1();
newwindow.Show();
//To close the first window...
Close();
{
因此,其中一行应该取消初始化Kinect,以便新窗口可以自由使用,但当它转到新窗口时,Kinect会冻结。如果我用鼠标回到第一个窗口,它会再次在第一个窗口上工作,而这不应该。
我还在初始化阶段的这一行中添加了
public Window1()
{
//Other init code is here, but this is the line I added. It doesn't seem to do anything.
InitializeKinectSensor(this.Kinect);
}
非常感谢您的帮助!!我相信这很简单,我只是失败得很惨哈哈XD
您真的必须创建一个新窗口而不是使用页面吗?
在您的主窗口中,您可以创建一个框架,该框架占用所有窗口,并使用该框架在页面之间导航。这样,您将在整个应用程序中保持运动学的焦点。
很大程度上取决于UninitializeKinectSensor实际在做什么。不过,作为一个快速解决方案,您可以尝试在后台工作人员上调用uninitialize,看看这是否有帮助。
不要使用"Show()",而是使用"ShowDialog()"。如果可以创建一个静态类或方法来初始化和取消初始化kinect,效果会更好。
public static void start()
{
KinectSensor.KinectSensors.StatusChanged += kinectSensorsStatusChanged;
DiscoverSensor();
}
private static void kinectSensorsStatusChanged(object sender, StatusChangedEventArgs e)
{
KinectSensor oldSensor = Kinect;
if (oldSensor != null)
{
UninitializeKinect();
}
var status = e.Status;
if (Kinect == null)
{
//updateStatus(status);
if (e.Status == KinectStatus.Connected)
{
Kinect = e.Sensor;
DiscoverSensor();
}
}
else
{
if (Kinect == e.Sensor)
{
//updateStatus(status);
if (e.Status == KinectStatus.Disconnected ||
e.Status == KinectStatus.NotPowered)
{
Kinect = null;
sensorConflict = false;
DiscoverSensor();
}
}
}
}
private static DispatcherTimer readyTimer;
private static void UninitializeKinect()
{
if (speechRecognizer != null && Kinect != null)
{
Kinect.AudioSource.Stop();
Kinect.SkeletonFrameReady -= kinect_SkeletonFrameReady;
Kinect.SkeletonStream.Disable();
Kinect.Stop();
//this.FrameSkeletons = null;
speechRecognizer.RecognizeAsyncCancel();
speechRecognizer.RecognizeAsyncStop();
}
if (readyTimer != null)
{
readyTimer.Stop();
readyTimer = null;
}
}