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

Kinect New Window Wpf

您真的必须创建一个新窗口而不是使用页面吗?

在您的主窗口中,您可以创建一个框架,该框架占用所有窗口,并使用该框架在页面之间导航。这样,您将在整个应用程序中保持运动学的焦点。

很大程度上取决于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;
            }
        }