public SynthImageView(SynthImage synthImage) { InitializeComponent(); if (synthImage.GetType() == typeof(NDVI)) { Title = "NDVI"; layers = new Layer[2] { null, null }; BandAButton.Content = "NIR"; BandGButton.Visibility = Visibility.Hidden; BandBButton.Visibility = Visibility.Hidden; CoeffName.Visibility = Visibility.Hidden; CoeffValue.Visibility = Visibility.Hidden; } else if (synthImage.GetType() == typeof(IPVI)) { Title = "IPVI"; layers = new Layer[2] { null, null }; BandAButton.Content = "NIR"; BandGButton.Visibility = Visibility.Hidden; BandBButton.Visibility = Visibility.Hidden; CoeffName.Visibility = Visibility.Hidden; CoeffValue.Visibility = Visibility.Hidden; } else if (synthImage.GetType() == typeof(SAVI)) { Title = "SAVI"; layers = new Layer[2] { null, null }; BandAButton.Content = "NIR"; BandGButton.Visibility = Visibility.Hidden; BandBButton.Visibility = Visibility.Hidden; CoeffName.Text = "L"; } else if (synthImage.GetType() == typeof(MSAVI)) { Title = "MSAVI"; layers = new Layer[2] { null, null }; BandAButton.Content = "NIR"; BandGButton.Visibility = Visibility.Hidden; BandBButton.Visibility = Visibility.Hidden; CoeffName.Visibility = Visibility.Hidden; CoeffValue.Visibility = Visibility.Hidden; } else if (synthImage.GetType() == typeof(GEMI)) { Title = "GEMI"; layers = new Layer[2] { null, null }; BandAButton.Content = "NIR"; BandGButton.Visibility = Visibility.Hidden; BandBButton.Visibility = Visibility.Hidden; CoeffName.Visibility = Visibility.Hidden; CoeffValue.Visibility = Visibility.Hidden; } else if (synthImage.GetType() == typeof(ARVI)) { Title = "SAVI"; layers = new Layer[3] { null, null, null }; BandAButton.Content = "NIR"; BandBButton.Visibility = Visibility.Hidden; BandGButton.Content = "B"; BandGButton.Background = new SolidColorBrush(Color.FromRgb(128, 124, 218)); CoeffName.Text = "a"; } else if (synthImage.GetType() == typeof(BlendChanel)) { Title = "Смешивание каналов"; layers = new Layer[3] { null, null, null }; BandBButton.Visibility = Visibility.Hidden; CoeffName.Visibility = Visibility.Hidden; CoeffValue.Visibility = Visibility.Hidden; SaveResButton.Visibility = Visibility.Hidden; PaletteComboBox.Visibility = Visibility.Hidden; BandAButton.Content = "R"; BandAButton.Background = new SolidColorBrush(Color.FromRgb(218, 124, 124)); BandRButton.Content = "G"; BandRButton.Background = new SolidColorBrush(Color.FromRgb(145, 218, 124)); BandGButton.Content = "B"; BandGButton.Background = new SolidColorBrush(Color.FromRgb(128, 124, 218)); CoeffName.Text = "a"; } else { MessageBox.Show("Произошла внуренняя ошибка", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); this.Close(); } defaultName[0] = BandAButton.Content.ToString(); defaultName[1] = BandRButton.Content.ToString(); defaultName[2] = BandGButton.Content.ToString(); defaultName[3] = BandBButton.Content.ToString(); ListBoxLayers.ItemsSource = LayerManager.instance.layers; ListBoxLayers.SelectedIndex = LayerManager.instance.SelectImage; this.synthImage = synthImage; }
private async void CalculateButtonClick(object sender, RoutedEventArgs e) { // Проерка коэффцициентов double coef = 0; try { coef = Convert.ToDouble(CoeffValue.Text.Replace(".", ",")); } catch { MessageBox.Show("Не правильно введен коэффициент", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (synthImage.GetType() == typeof(SAVI)) { if (coef < 0 || coef > 1) { MessageBox.Show("Выберите L = [0; 1]", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } else { synthImage.SetCoeff(coef); } } if (synthImage.GetType() == typeof(ARVI)) { if (coef < 0 || coef > 1) { MessageBox.Show("Выберите a = [0; 1]", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } else { synthImage.SetCoeff(coef); } } // Проверка на выбор каналов for (int i = 0; i < layers.Length; i++) { if (layers[i] == null) { MessageBox.Show("Необходимо выбрать изображения", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } } Palette palette = (Palette)PaletteComboBox.SelectedIndex; try { CorrectProgressBar.IsIndeterminate = true; image = await Controller.SynthImageTask(synthImage, layers, palette); MainImage.Source = image; } catch (OperationCanceledException) { image = null; MessageBox.Show("Произошла внуренняя ошибка. Код ошибки 1", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } GC.Collect(); GC.WaitForPendingFinalizers(); CorrectProgressBar.IsIndeterminate = false; }