示例#1
0
        private void PageChanged(int pageIndex)
        {
            this.pageIndex = pageIndex;
            switch (pageIndex)
            {
            case 0:
                colorModelsView       = new ColorModelsView(CloseFrame);
                colorModelsViewModel  = new ColorModelsViewModel();
                MainFrame.DataContext = colorModelsViewModel;
                MainFrame.Content     = colorModelsView;
                break;

            case 1:
                fractalsView          = new FractalsView(CloseFrame);
                fractalsViewModel     = new FractalsDataViewModel(400, 400);
                MainFrame.DataContext = fractalsViewModel;
                fractalsView.FractalPower3Radio.Checked += FractalPowerChanged;
                fractalsView.FractalPower4Radio.Checked += FractalPowerChanged;
                MainFrame.Content = fractalsView;
                break;

            case 2:
                transformationsView      = new TransformationView(CloseFrame);
                transformationsViewModel = new TransformationsViewModel(transformationsView.HandleAnimationEnd);
                MainFrame.DataContext    = transformationsViewModel;
                transformationsView.CenterTransformRadio.Checked += TransformRadioChanged;
                transformationsView.VertexTransformRadio.Checked += TransformRadioChanged;
                MainFrame.Content = transformationsView;
                break;
            }
        }
示例#2
0
        private void StartButton_Click(object sender, RoutedEventArgs e)
        {
            TransformationsViewModel viewModel = (TransformationsViewModel)DataContext;

            if (Validation.GetHasError(InputSideLength))
            {
                InputSideLength.Text = viewModel.SideLength.ToString();
                ErrorWindow error = new ErrorWindow(badSymbolsError);
                error.ShowDialog();
            }
            if (Validation.GetHasError(InputX))
            {
                InputX.Text = viewModel.CoordX.ToString();
                ErrorWindow error = new ErrorWindow(badSymbolsError);
                error.ShowDialog();
            }
            if (Validation.GetHasError(InputY))
            {
                InputY.Text = viewModel.CoordY.ToString();
                ErrorWindow error = new ErrorWindow(badSymbolsError);
                error.ShowDialog();
            }
            if (Validation.GetHasError(InputMaxRotation))
            {
                InputMaxRotation.Text = viewModel.MaxRotation.ToString();
                ErrorWindow error = new ErrorWindow(badSymbolsError);
                error.ShowDialog();
            }
            StartButtonText.Text   = "Продовжити";
            StartButton.Visibility = Visibility.Collapsed;
            PauseButton.Visibility = Visibility.Visible;
            StopButton.IsEnabled   = true;
            ToggleTransformUI(false);
        }
示例#3
0
        public IActionResult Index()
        {
            TransformationsViewModel viewModel = new TransformationsViewModel();

            viewModel.DensityAlpha = viewModel.DensityRed = viewModel.DensityGreen = viewModel.DensityBlue = 100;
            return(View(viewModel));
        }
示例#4
0
 public IActionResult Index(TransformationsViewModel viewModel)
 {
     if (this.ModelState.IsValid)
     {
         viewModel.ImageBytes = TransformImage(viewModel);
     }
     return(View(nameof(Index), viewModel));
 }
示例#5
0
        private static IEnumerable <IImageTransformation> LoadImageTransformations(TransformationsViewModel viewModel)
        {
            List <IImageTransformation> transformations = new List <IImageTransformation>(4);

            if (viewModel.Angle != 0)
            {
                transformations.Add(
                    new RotationImageTransformation((double)viewModel.Angle));
            }

            if (viewModel.StretchHorizontal != 0 || viewModel.StretchVertical != 0)
            {
                transformations.Add(
                    new StretchImageTransformation(
                        (double)viewModel.StretchHorizontal / 100,
                        (double)viewModel.StretchVertical / 100));
            }

            if (viewModel.FlipHorizontally || viewModel.FlipVertically)
            {
                transformations.Add(
                    new FlipImageTransformation(viewModel.FlipHorizontally, viewModel.FlipVertically));
            }

            if (new decimal[]
            {
                viewModel.DensityAlpha,
                viewModel.DensityRed,
                viewModel.DensityGreen,
                viewModel.DensityBlue
            }.Any(a => a != 100))
            {
                transformations.Add(
                    new DensityImageTransformation(
                        (double)viewModel.DensityAlpha / 100,
                        (double)viewModel.DensityRed / 100,
                        (double)viewModel.DensityGreen / 100,
                        (double)viewModel.DensityBlue / 100
                        ));
            }

            return(transformations);
        }
示例#6
0
        private byte[] TransformImage(TransformationsViewModel viewModel)
        {
            var transformations = LoadImageTransformations(viewModel);

            Bitmap bmp = null;

            using (MemoryStream stm = new MemoryStream())
            {
                viewModel.File.CopyTo(stm);

                bmp = ImageTransformer.Apply(stm, transformations);

                // clear memory stream
                stm.Position = 0;
                stm.SetLength(0);

                bmp.Save(stm, System.Drawing.Imaging.ImageFormat.Png);
                return(stm.ToArray());
            }
        }