Пример #1
0
        //Метод, который отвечает за поворот холста на 90, 180 градусов
        public void RotationTransform(object sender, EventArgs e)
        {
            bool is90 = (sender as MenuItem).Name == "rotation90";

            double rotationAngle = is90 ? 90d : 180d;

            double centerX = surface.ActualWidth / 2;
            double centerY = surface.ActualHeight / 2;
            double scaleVertical = surface.ActualHeight / surface.ActualWidth;
            double scaleHorizontal = surface.ActualWidth / surface.ActualHeight;

            switch (rotationState)
            {
                case RotateIteration.None:
                    transGroup = new TransformGroup();
                    surface.RenderTransform = transGroup;
                    if (is90)
                    {
                        transGroup.Children.Add(new ScaleTransform(scaleVertical, scaleVertical, centerX, centerY));
                        rotationState++;
                    }
                    else
                    {
                        rotationState = RotateIteration.Second;
                    }
                    break;
                case RotateIteration.First:
                    if (is90)
                    {
                        transGroup.Children.Add(new ScaleTransform(scaleHorizontal, scaleHorizontal, centerX, centerY));
                        rotationState++;
                    }
                    else
                    {
                        rotationState = RotateIteration.Third;
                    }
                    break;
                case RotateIteration.Second:
                    if (is90)
                    {
                        transGroup.Children.Add(new ScaleTransform(scaleVertical, scaleVertical, centerX, centerY));
                        rotationState++;
                    }
                    else
                    {
                        rotationState = RotateIteration.None;
                        surface.RenderTransform = null;
                    }
                    break;
                case RotateIteration.Third:
                    if (is90)
                    {
                        transGroup.Children.Add(new ScaleTransform(scaleHorizontal, scaleHorizontal, centerX, centerY));
                        rotationState = RotateIteration.None;
                        surface.RenderTransform = null;
                    }
                    else
                    {
                        rotationState  = RotateIteration.First;
                    }
                    break;
            }
            transGroup.Children.Add(new RotateTransform(rotationAngle, centerX, centerY));
        }
Пример #2
0
 public ImageEditor(InkCanvas surface, ProgressBar progressBar)
 {
     this.surface = surface;
     this.rotationState = RotateIteration.None;
 }