Beispiel #1
0
        public static IShape GetShape()
        {
            var context = new DrawingContext();

            return(new AggregateShape(new IShape[]
            {
                new LineShape(new Point(10, 10), new Point(150, 10), context.CreatePenBillet()),
                new EllipseShape(new Point(10, 40), new Point(150, 80), context.CreatePenBillet()),
                new ArcShape(new Rectangle(100, 100, 100, 150), 90, 90, context.CreatePenBillet()),
                new RectangleShape(new Point(10, 80), new Point(150, 120), context.CreatePenBillet()),
                new StringShape("shaaaapes", new Point(10, 100), context.CreateBrushBillet(), context.CreateFontBillet()),
                new CurveShape(new []
                {
                    new Point(10, 120), new Point(80, 150), new Point(150, 120)
                }, context.CreatePenBillet()),
            }));
        }
Beispiel #2
0
        public IShape Build(IList <string> parameters, DrawingContext context)
        {
            if (parameters.Count != ParamCount)
            {
                throw new ArgumentException($"Invalid number of arguments: {parameters.Count}. Expected {ParamCount}.");
            }
            var intParameters = parameters.Select(int.Parse).ToList();
            var start         = new Point(intParameters[0], intParameters[1]);
            var end           = new Point(intParameters[2], intParameters[3]);

            return(new RectangleShape(start, end, context.CreatePenBillet()));
        }
        private EllipseShape CreateEllipseShape(Point upperLeftCorner, Point lowerRightCorner, DrawingContext context)
        {
            var middleX    = (upperLeftCorner.X + lowerRightCorner.X) / 2;
            var height     = lowerRightCorner.Y - upperLeftCorner.Y;
            var width      = lowerRightCorner.X - upperLeftCorner.X;
            var hypotenuse = Math.Sqrt(height * height + width * width / 4);
            var radius     = (int)(height * width / (2 * hypotenuse + width));

            return(new EllipseShape(
                       new Point(middleX - radius, lowerRightCorner.Y - 2 * radius),
                       new Point(middleX + radius, lowerRightCorner.Y),
                       context.CreatePenBillet()
                       ));
        }
Beispiel #4
0
        public IShape Build(IList <string> parameters, DrawingContext context)
        {
            if (parameters.Count != ParamCount)
            {
                throw new ArgumentException($"Invalid number of arguments: {parameters.Count}. Expected {ParamCount}.");
            }
            var doubleParameters = parameters.Take(4).Select(int.Parse).ToList();
            var width            = doubleParameters[2] - doubleParameters[0];
            var height           = doubleParameters[3] - doubleParameters[1];
            var rect             = new Rectangle(doubleParameters[0], doubleParameters[1], width, height);
            var doubleParametres = parameters.Skip(4).Take(2).Select(float.Parse).ToList();

            return(new ArcShape(rect, doubleParametres[0], doubleParametres[1], context.CreatePenBillet()));
        }
Beispiel #5
0
        public IShape Build(IList <string> parameters, DrawingContext context)
        {
            if (parameters.Count % 2 != 0)
            {
                throw new ArgumentException($"The number of parameters must be even.");
            }
            var intParameters = parameters
                                .Select(int.Parse)
                                .ToList();
            var points = intParameters
                         .Zip(intParameters.Skip(1), (a, b) => new Point(a, b))
                         .Where((_, index) => index % 2 == 0)
                         .ToList();

            return(new CurveShape(points, context.CreatePenBillet()));
        }
        public IShape Build(IList <string> parameters, DrawingContext context)
        {
            if (parameters.Count != ParamCount)
            {
                throw new ArgumentException($"Invalid number of arguments: {parameters.Count}. Expected {ParamCount}.");
            }
            var intParameters = parameters.Select(int.Parse).ToList();

            var start   = new Point(intParameters[0], intParameters[1]);
            var end     = new Point(intParameters[2], intParameters[3]);
            var middleX = (start.X + end.X) / 2;

            var lineShape1 = new LineShape(new Point(start.X, end.Y), new Point(middleX, start.Y), context.CreatePenBillet());
            var lineShape2 = new LineShape(new Point(middleX, start.Y), new Point(end.X, end.Y), context.CreatePenBillet());
            var lineShape3 = new LineShape(new Point(start.X, end.Y), new Point(end.X, end.Y), context.CreatePenBillet());
            var lineShape4 = new LineShape(new Point(middleX, start.Y), new Point(middleX, end.Y), context.CreatePenBillet());

            var ellipseShape = CreateEllipseShape(start, end, context);

            return(new AggregateShape(new IShape[]
            {
                lineShape1, lineShape2, lineShape3, lineShape4, ellipseShape
            }));
        }