public void InitializeOnceAtStartup(CameraViewUserControlModel viewModel) { Trace.Assert(viewModel != null); cameraViewUserControlModel = viewModel; this.DataContext = viewModel; }
public void InitializeOnceAtStartup(CameraViewUserControlModel viewModel) { Trace.Assert(viewModel != null); Trace.Assert(viewModel.Device != null && viewModel.Device.CameraViewImageSourceBitmapCapture != null); if (cameraViewUserControlModel != null) { Trace.Assert(cameraViewUserControlModel.Device != null && cameraViewUserControlModel.Device.CameraViewImageSourceBitmapCapture != null); cameraViewUserControlModel.CameraViewWpfBitmapSourceWidthChanged -= cameraViewUserControlModel_CameraViewWpfBitmapSourceWidthChanged; cameraViewUserControlModel.CameraViewWpfBitmapSourceHeightChanged -= cameraViewUserControlModel_CameraViewWpfBitmapSourceHeightChanged; cameraViewUserControlModel.Device.CameraViewImageSourceBitmapCapture.IsCameraDeviceConnectedChanged -= capture_IsCameraDeviceConnectedChanged; cameraViewUserControlModel.Device.CameraViewImageSourceBitmapCapture.CameraViewImageSourceBitmapChanged -= capture_CameraViewImageSourceBitmapChanged; cameraViewUserControlModel = null; } this.DataContext = null; cameraViewUserControlModel = viewModel; cameraViewUserControlModel.CameraViewWpfBitmapSourceWidthChanged += cameraViewUserControlModel_CameraViewWpfBitmapSourceWidthChanged; cameraViewUserControlModel.CameraViewWpfBitmapSourceHeightChanged += cameraViewUserControlModel_CameraViewWpfBitmapSourceHeightChanged; cameraViewUserControlModel.Device.CameraViewImageSourceBitmapCapture.IsCameraDeviceConnectedChanged += capture_IsCameraDeviceConnectedChanged; cameraViewUserControlModel.Device.CameraViewImageSourceBitmapCapture.CameraViewImageSourceBitmapChanged += capture_CameraViewImageSourceBitmapChanged; }
public void InitializeOnceAtStartup(CameraViewWindowModel newCameraViewWindowModel, CameraViewUserControlModel newCameraViewUserControlModel) { Trace.Assert(newCameraViewWindowModel != null); Trace.Assert(newCameraViewUserControlModel != null); cameraViewUserControlModel = newCameraViewUserControlModel; cameraViewWindowModel = newCameraViewWindowModel; cameraViewUserControl.InitializeOnceAtStartup(newCameraViewUserControlModel); cameraViewWindowModel.IsDragging = false; cameraViewWindowModel.IsMouseHovered = false; DataContext = cameraViewWindowModel; cameraViewWindowModel.WindowStateChanged += delegate { // TODO: MUSTDO: find the better way this.Dispatcher.Invoke(() => { if (WindowState == WindowState.Maximized) { WindowState = WindowState.Normal; return; } if (cameraViewWindowModel.IsNormalOrElseMinimized) { (FindResource("SetWindowStateToNormalWithOpacityIncreaseStoryboardKey") as Storyboard).Begin(this); } else { (FindResource("SetWindowStateToMinimizedWithOpacityDecreaseStoryboardKey") as Storyboard).Begin(this); } }); }; newCameraViewUserControlModel.Device.CameraViewImageSourceBitmapCapture.CameraViewImageSourceBitmapSizeOrPixelFormatChanged += (sender, e) => { try { var size = newCameraViewUserControlModel.Device.CameraViewImageSourceBitmapCapture.CameraViewImageSourceBitmapSize; Resizing.ContentAspectRatio = (double)size.Width / (double)size.Height; // TODO: MUSTDO: the next return is necessary, currently. return; var centerX = (Resizing.Left + Resizing.Right) / 2; // NOTE: cannot use Application.Current.Dispatcher.Invoke Resizing.Left = centerX - size.Width / 2; Resizing.Right = centerX + size.Width / 2; } catch (Exception ex) { if (ApplicationCommonSettings.IsDebuggingInternal) { Debugger.Break(); } Console.WriteLine(ex.Message); } }; this.Activated += (Sender, e) => { DebugWriteLine("CameraView is activated.\r\n"); }; }
public App() : base() { Egs.BindableResources.Current.CultureChanged += delegate { ApplicationCommonSettings.HostApplicationName = Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_GestureCamera; //ApplicationCommonSettings.HostApplicationName = "WpfApplication2"; }; // You can change the application CultureInfo to some cultures. // The next line lets it use OS culture Egs.BindableResources.Current.ChangeCulture(""); //Egs.BindableResources.Current.ChangeCulture(ApplicationCommonSettings.DefaultCultureInfoName); //Egs.BindableResources.Current.ChangeCulture("en"); //Egs.BindableResources.Current.ChangeCulture("ja"); //Egs.BindableResources.Current.ChangeCulture("zh-Hans"); if (DuplicatedProcessStartBlocking.TryGetMutexOnTheBeginningOfApplicationConstructor() == false) { var msg = string.Format(System.Globalization.CultureInfo.InvariantCulture, Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_Application0IsAlreadyRunning, ApplicationCommonSettings.HostApplicationName); MessageBox.Show(msg, ApplicationCommonSettings.HostApplicationName); Application.Current.Shutdown(); return; } // Sorry, EgsHostSettings and EgsDevice.GetDefaultEgsDevice(EgsDeviceSettings) are no longer available. // Device settings are saved on Host PC, // and the host application transfers the device settings to connected device when it starts running or a device is connected. // You can use EgsDevice object directly, without EgsHostAppBaseComponents or EgsHostOnUserControl. Device = EgsDevice.GetDefaultEgsDevice(); Device.Settings.FaceDetectionMethod.Value = FaceDetectionMethods.DefaultProcessOnEgsDevice; Device.Settings.IsToDetectFaces.Value = true; Device.Settings.IsToDetectHands.Value = true; // OnePersonBothHandsViewModel can receive information from EgsDevice on EgsGestureHidReport.ReportUpdated event etc. // It interprets the information from EgsDevice for CursorForm and so on. OnePersonBothHandsViewModel = new OnePersonBothHandsViewModel(); // A lot of classes in "Egs" namespace have "InitializeOnceAtStartup..." methods. // Please call the initialization before they are used as arguments of some other objects, or before some event handlers are attached. OnePersonBothHandsViewModel.InitializeOnceAtStartup(Device); // CursorForm shows Gesture Cursor. It is available on Windows 7, 8, 8.1 (contains start screen) and 10. CursorViews = new CursorForm[Device.TrackableHandsCountMaximum]; CursorViews[0] = new CursorForm(); CursorViews[1] = new CursorForm(); CursorViews[0].InitializeOnceAtStartup(OnePersonBothHandsViewModel.RightHand, ImageInformationSet.CreateDefaultRightCursorImageInformationSetList()); CursorViews[1].InitializeOnceAtStartup(OnePersonBothHandsViewModel.LeftHand, ImageInformationSet.CreateDefaultLeftCursorImageInformationSetList()); Device.EgsGestureHidReport.ReportUpdated += EgsGestureHidReport_ReportUpdated; // Sorry, specification is changed. You need to make an object of CameraViewUserControlModel. CameraViewUserControlModel = new CameraViewUserControlModel(); CameraViewWindowModel = new CameraViewWindowModel(); CameraViewWindow = new CameraViewWindow(); CameraViewUserControlModel.IsToDrawImageSet = true; Device.Settings.IsToDrawBordersOnCameraViewImageByDevice.Value = false; CameraViewUserControlModel.InitializeOnceAtStartup(Device); CameraViewWindowModel.InitializeOnceAtStartup(Device); CameraViewWindow.InitializeOnceAtStartup(CameraViewWindowModel, CameraViewUserControlModel); CameraViewWindow.MainMenuItemsPanel.Columns = 2; // Minimize button needs EgsHostAppBaseComponents, because there is no way to "Un"-minimize it except for tray icon in system notification area, currently. // AppTrayIconAndMenuItemsComponent manages the tray icon, and change the visibility of Settings Window and Camera View. CameraViewWindow.MinimizeButton.Visibility = Visibility.Collapsed; // Settings button needs EgsHostAppBaseComponents, because only EgsHostAppBaseComponents has all information about host app, // and SettingsWindow can change the settings of EgsHostAppBaseComponents. CameraViewWindow.SettingsButton.Visibility = Visibility.Collapsed; // EgsHostAppBaseComponents also attachs an event handler which calls EgsHostAppBaseComponents.Dispose() and closes the application. CameraViewWindowModel.ExitCommand.PerformEventHandler += delegate { // In this example program, the next line means the application exit. CameraViewWindow.Close(); }; var button = new System.Windows.Controls.Button() { Content = "Show Dialog" }; button.Click += delegate { MessageBox.Show("Hello!"); }; CameraViewWindow.MainMenuItemsPanel.Children.Insert(0, button); CameraViewWindow.KeyDown += (sender, e) => { switch (e.Key) { case System.Windows.Input.Key.Escape: // This application does not use EgsHostAppBaseComponents, so this just closes the window. CameraViewWindow.Close(); break; } }; // But this event handler attach close cursors and device. CameraViewWindow.Closed += delegate { Device.EgsGestureHidReport.ReportUpdated -= EgsGestureHidReport_ReportUpdated; // When you get EgsDevice by EgsDevice.GetDefaultEgsDevice, you need to call EgsDevice.CloseDefaultEgsDevice(). Device.Settings.IsToDetectFaces.Value = false; Device.Settings.IsToDetectHands.Value = false; EgsDevice.CloseDefaultEgsDevice(); // And then, you need to close cursorViews. foreach (var cursorView in CursorViews) { cursorView.Close(); } }; this.Exit += delegate { DuplicatedProcessStartBlocking.ReleaseMutex(); }; }