Esempio n. 1
0
        private async void DividirImagen_ClickDireito(object sender, MouseButtonEventArgs e)
        {
            Image imagem = (Image)sender;

            if (imagem.DataContext is ImagemProcessar imagemProcessar)
            {
                int indiceSelecionado = arquivos.IndexOf(imagemProcessar);
                if (indiceSelecionado == 0)
                {
                    MessageBox.Show("Não é possivel realizar essa operação na primeira imagem", "Alert", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                overlayGrid.Visibility = Visibility.Visible;

                int altura = (int)(e.GetPosition(imagem).Y *(imagemProcessar.Imagem.PixelHeight / imagem.ActualHeight));
                List <BitmapSource> novasImagens = null;
                await Task.Factory.StartNew(() => {
                    novasImagens = ProcessarImagens.SepararUnirImagem(arquivos.ElementAt(indiceSelecionado - 1), arquivos.ElementAt(indiceSelecionado), altura);
                    Dispatcher.Invoke(() => {
                        arquivos.RemoveAt(indiceSelecionado - 1);
                        arquivos.RemoveAt(indiceSelecionado - 1);
                        arquivos.Insert(indiceSelecionado - 1, new ImagemProcessar(novasImagens.ElementAt(1)));
                        arquivos.Insert(indiceSelecionado - 1, new ImagemProcessar(novasImagens.ElementAt(0)));
                    });
                });

                overlayGrid.Visibility = Visibility.Hidden;
            }
        }
Esempio n. 2
0
        private async void UnirAbaixo_Click(object sender, RoutedEventArgs e)
        {
            Button botao = (Button)sender;

            if (botao.DataContext is ImagemProcessar imagemProcessar)
            {
                int indiceSelecionado = arquivos.IndexOf(imagemProcessar);
                if (indiceSelecionado == arquivos.Count - 1)
                {
                    MessageBox.Show("Não há imagem para unir", "Alerta", MessageBoxButton.OK, MessageBoxImage.Error);
                }

                overlayGrid.Visibility = Visibility.Visible;

                BitmapSource novaImagem = null;
                await Task.Factory.StartNew(() => {
                    novaImagem = ProcessarImagens.CombinarImagens(arquivos.ElementAt(indiceSelecionado), arquivos.ElementAt(indiceSelecionado + 1));
                    Dispatcher.Invoke(() => {
                        arquivos.RemoveAt(indiceSelecionado + 1);
                        arquivos.RemoveAt(indiceSelecionado);
                        arquivos.Insert(indiceSelecionado, new ImagemProcessar(novaImagem));
                    });
                });

                overlayGrid.Visibility = Visibility.Hidden;
            }
        }
Esempio n. 3
0
        private async void UnirTodas_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult messageBoxResult = MessageBox.Show("Deseja realmente unitor todas as imagens? Isso pode demorar bastante tempo.", "Unir Todas", MessageBoxButton.YesNo);

            if (messageBoxResult == MessageBoxResult.No)
            {
                return;
            }

            overlayGrid.Visibility = Visibility.Visible;
            await Task.Factory.StartNew(() => {
                var imagemUnida = ProcessarImagens.CombinarImagens(arquivos.ToList());
                Dispatcher.Invoke(() => {
                    arquivos.Clear();
                    arquivos.Add(new ImagemProcessar(imagemUnida));
                });
            });

            overlayGrid.Visibility = Visibility.Hidden;
        }
Esempio n. 4
0
        private async void DividirImagen_ClickMeio(object sender, MouseButtonEventArgs e)
        {
            if (!(e.ButtonState == MouseButtonState.Pressed && e.ChangedButton == MouseButton.Middle))
            {
                return;
            }

            Image imagem = (Image)sender;

            if (imagem.DataContext is ImagemProcessar imagemProcessar)
            {
                int indiceSelecionado = arquivos.IndexOf(imagemProcessar);
                if (indiceSelecionado == 0 || indiceSelecionado == arquivos.Count - 1)
                {
                    MessageBox.Show("Não é possivel realizar essa operação na primeira ou ultima imagem", "Alert", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }


                overlayGrid.Visibility = Visibility.Visible;

                int altura = (int)(e.GetPosition(imagem).Y *(arquivos.ElementAt(indiceSelecionado).Imagem.Height / imagem.ActualHeight));
                List <BitmapSource> novasImagens = null;

                await Task.Factory.StartNew(() => {
                    novasImagens        = ProcessarImagens.SepararUnirImagem(arquivos.ElementAt(indiceSelecionado - 1), arquivos.ElementAt(indiceSelecionado), altura);
                    var imagemUnificada = ProcessarImagens.CombinarImagens(novasImagens.ElementAt(1), arquivos.ElementAt(indiceSelecionado + 1).Imagem);
                    Dispatcher.InvokeAsync(() => {
                        arquivos.RemoveAt(indiceSelecionado - 1);
                        arquivos.RemoveAt(indiceSelecionado - 1);
                        arquivos.RemoveAt(indiceSelecionado - 1);
                        arquivos.Insert(indiceSelecionado - 1, new ImagemProcessar(imagemUnificada));
                        arquivos.Insert(indiceSelecionado - 1, new ImagemProcessar(novasImagens.ElementAt(0)));
                    });
                });

                overlayGrid.Visibility = Visibility.Hidden;
            }
        }
Esempio n. 5
0
        private async void DividirImagen_ClickEsquerdo(object sender, MouseButtonEventArgs e)
        {
            Image imagem = (Image)sender;

            if (imagem.DataContext is ImagemProcessar imagemProcessar)
            {
                int indiceSelecionado = arquivos.IndexOf(imagemProcessar);
                overlayGrid.Visibility = Visibility.Visible;

                int altura = (int)(e.GetPosition(imagem).Y *(imagemProcessar.Imagem.PixelHeight / imagem.ActualHeight));
                List <BitmapSource> novasImagens = null;
                await Task.Factory.StartNew(() => {
                    novasImagens = ProcessarImagens.SepararImagem(arquivos.ElementAt(indiceSelecionado), altura);
                    Dispatcher.Invoke(() => {
                        arquivos.RemoveAt(indiceSelecionado);
                        arquivos.Insert(indiceSelecionado, new ImagemProcessar(novasImagens.ElementAt(1)));
                        arquivos.Insert(indiceSelecionado, new ImagemProcessar(novasImagens.ElementAt(0)));
                    });
                });

                overlayGrid.Visibility = Visibility.Hidden;
            }
        }