//Метод, который отвечает за поворот холста на 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)); }
public ImageEditor(InkCanvas surface, ProgressBar progressBar) { this.surface = surface; this.rotationState = RotateIteration.None; }