コード例 #1
0
        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;
            }
            }
        }