private void PerformTransform(List <Point> points, int mode, Point value, bool isDefaultStyle) { switch (mode) { case 0: { RedrawShapes(); DrawMyShapeWithLabel(defaultPoints, isDefaultStyle); shapesPoints[shapesPoints.Count - 1] = defaultPoints; break; } case 1: { RedrawShapes(); List <List <int> > transform = Transformation.MoveTo(value.X, value.Y); points = Transformation.getTransformedPoint(points, transform); DrawMyShapeWithLabel(points, isDefaultStyle); shapesPoints[shapesPoints.Count - 1] = points; break; } case 2: { if (string.IsNullOrEmpty(tbDegree.Text)) { MessageBox.Show("Input Degree before do this action"); return; } RedrawShapes(); List <List <double> > transform = Transformation.RotateTo(int.Parse(tbDegree.Text)); Point firstPoint = new Point(points.ElementAt(0).X, points.ElementAt(0).Y); points = Transformation.MoveToO(points, firstPoint); points = Transformation.getTransformedPointDouble(points, transform); var pointsAfter = new List <Point>(); foreach (var item in points) { Point point = new Point(item.X + firstPoint.X, item.Y + firstPoint.Y); pointsAfter.Add(point); } points = pointsAfter; DrawMyShapeWithLabel(points, isDefaultStyle); shapesPoints[shapesPoints.Count - 1] = points; break; } case 3: { RedrawShapes(); List <List <int> > transform = Transformation.Flip(true, false); points = Transformation.getTransformedPoint(points, transform); var pointsAfterFlipX = new List <Point>(); foreach (var item in points) { Point point = new Point(item.X, item.Y + MyCoordinate.centerPoint.Y * 2); pointsAfterFlipX.Add(point); } points = pointsAfterFlipX; DrawMyShapeWithLabel(points, isDefaultStyle); shapesPoints[shapesPoints.Count - 1] = points; break; } case 4: { RedrawShapes(); List <List <int> > transform = Transformation.Flip(false, true); points = Transformation.getTransformedPoint(points, transform); var pointsAfterFlipX = new List <Point>(); foreach (var item in points) { Point point = new Point(item.X + MyCoordinate.centerPoint.X * 2, item.Y); pointsAfterFlipX.Add(point); } points = pointsAfterFlipX; DrawMyShapeWithLabel(points, isDefaultStyle); shapesPoints[shapesPoints.Count - 1] = points; break; } case 5: { RedrawShapes(); List <List <int> > transform = Transformation.Flip(true, true); points = Transformation.getTransformedPoint(points, transform); var pointsAfterFlipX = new List <Point>(); foreach (var item in points) { Point point = new Point(item.X + MyCoordinate.centerPoint.X * 2, item.Y + MyCoordinate.centerPoint.Y * 2); pointsAfterFlipX.Add(point); } points = pointsAfterFlipX; DrawMyShapeWithLabel(points, isDefaultStyle); shapesPoints[shapesPoints.Count - 1] = points; break; } } }