/// <summary> /// Для синхронизации GUI и потока съемки: Вывод каждого снятого кадра в свое место /// </summary> /// <param name="img"></param> public void SetCadr(Image img) { //Получить контрол var index = GetNextFotoIndex(); var control = _imagesControlList[index]; if (control.InvokeRequired) { var d = new GetImageHanlder(SetCadr); this.Invoke(d, new object[] { img }); } else { control.Image = _serviceProvider.GetService <ImageEditorService>().ScaleImage(img, 1920, 1280); Debug.WriteLine("wefwef" + Thread.CurrentThread.Name); //Если стояло выделение - убрать его if (control.IsNeedReFoting) { control.ChooseForRefoting(_imgChoose); } ButtonValidate(); } }
/// <summary> /// получить фото с камеры /// </summary> /// <returns></returns> public void TakePhoto(GetImageHanlder handler, Action actionIfException) { try { _cameraHandler.SetSetting(EDSDK.PropID_SaveTo, (uint)EDSDK.EdsSaveTo.Host); _cameraHandler.SetCapacity(); _cameraHandler.ImageHandler = handler; _cameraHandler.TakePhoto(actionIfException); } catch (Exception) { //Если прилетает ошибка от СДК о невозможности сделать фото throw new FocusGetExceptions(); } }
/// <summary> /// Добавить подписчика на трансляцию кадров с фотокамеры /// </summary> /// <param name="handler"></param> public void AddSubscriber(GetImageHanlder handler) { if (_cameraHandler.MainCamera != null) { if (IsActivated) { _viewerHandler = handler; StartLiveView(); } else { throw new Exception("Сервис не был активирован"); } } else throw new Exception("Список камер пуст, активация кадрового потока не возможна"); }
/// <summary> /// Для синхронизации GUI и потока съемки: Вывод liveView /// </summary> /// <param name="img"></param> public void SetLiveViewCadr(Image img) { if (pbLiveView.InvokeRequired) { try { var d = new GetImageHanlder(SetLiveViewCadr); this.Invoke(d, new object[] { img }); } catch (Exception) { } } else { pbLiveView.Image = img; } }
/// <summary> /// Добавить подписчика на трансляцию кадров с фотокамеры /// </summary> /// <param name="handler"></param> public void AddSubscriber(GetImageHanlder handler) { if (_cameraHandler.MainCamera != null) { if (IsActivated) { _viewerHandler = handler; StartLiveView(); } else { throw new Exception("Сервис не был активирован"); } } else { throw new Exception("Список камер пуст, активация кадрового потока не возможна"); } }
/// <summary> /// Для синхронизации GUI и потока съемки: Вывод каждого снятого кадра в свое место /// </summary> /// <param name="img"></param> public void SetCadr(Image img) { //Получить контрол var index = GetNextFotoIndex(); var control = _imagesControlList[index]; if (control.InvokeRequired) { var d = new GetImageHanlder(SetCadr); this.Invoke(d, new object[] { img }); } else { control.Image = _serviceProvider.GetService<ImageEditorService>().ScaleImage(img, 1920, 1280); Debug.WriteLine("wefwef" + Thread.CurrentThread.Name); //Если стояло выделение - убрать его if (control.IsNeedReFoting) control.ChooseForRefoting(_imgChoose); ButtonValidate(); } }
/// <summary> /// Для синхронизации GUI и потока съемки: Вывод liveView /// </summary> /// <param name="img"></param> public void SetLiveViewCadr(Image img) { if (pbLiveView.InvokeRequired) { try { var d = new GetImageHanlder(SetLiveViewCadr); this.Invoke(d, new object[] { img }); } catch (Exception) { } } else { pbLiveView.Image = img; } }
/// <summary> /// получить фото с камеры /// </summary> /// <returns></returns> public void TakePhoto(GetImageHanlder handler,Action actionIfException) { try { _cameraHandler.SetSetting(EDSDK.PropID_SaveTo, (uint)EDSDK.EdsSaveTo.Host); _cameraHandler.SetCapacity(); _cameraHandler.ImageHandler = handler; _cameraHandler.TakePhoto(actionIfException); } catch (Exception) { //Если прилетает ошибка от СДК о невозможности сделать фото throw new FocusGetExceptions(); } }
/// <summary> /// Убрать подписчиков на получение кадров с камеры /// </summary> public void RemoveSubscriber() { _viewerHandler = null; }
/// <summary> /// Убрать подписчиков на получение кадров с камеры /// </summary> public void RemoveSubscriber() { _viewerHandler = null; }