BezierTo() public method

Draws a Bezier curve to the specified point.
public BezierTo ( Point point1, Point point2, Point point3 ) : void
point1 Point The first control point used to specify the shape of the curve.
point2 Point The second control point used to specify the shape of the curve.
point3 Point The destination point for the end of the curve.
return void
Beispiel #1
0
        /// <summary>
        /// Parses the specified markup string.
        /// </summary>
        /// <param name="s">The markup string.</param>
        public void Parse(string s)
        {
            bool openFigure = false;

            using (StringReader reader = new StringReader(s))
            {
                Command lastCommand = Command.None;
                Command command;
                Point   point = new Point();

                while ((command = ReadCommand(reader, lastCommand)) != Command.Eof)
                {
                    switch (command)
                    {
                    case Command.FillRule:
                        // TODO: Implement.
                        reader.Read();
                        break;

                    case Command.Move:
                    case Command.MoveRelative:
                        if (openFigure)
                        {
                            _context.EndFigure(false);
                        }

                        if (command == Command.Move)
                        {
                            point = ReadPoint(reader);
                        }
                        else
                        {
                            point = ReadRelativePoint(reader, point);
                        }

                        _context.BeginFigure(point, true);
                        openFigure = true;
                        break;

                    case Command.Line:
                        point = ReadPoint(reader);
                        _context.LineTo(point);
                        break;

                    case Command.LineRelative:
                        point = ReadRelativePoint(reader, point);
                        _context.LineTo(point);
                        break;

                    case Command.HorizontalLine:
                        point = point.WithX(ReadDouble(reader));
                        _context.LineTo(point);
                        break;

                    case Command.HorizontalLineRelative:
                        point = new Point(point.X + ReadDouble(reader), point.Y);
                        _context.LineTo(point);
                        break;

                    case Command.VerticalLine:
                        point = point.WithY(ReadDouble(reader));
                        _context.LineTo(point);
                        break;

                    case Command.VerticalLineRelative:
                        point = new Point(point.X, point.Y + ReadDouble(reader));
                        _context.LineTo(point);
                        break;

                    case Command.CubicBezierCurve:
                    {
                        Point point1 = ReadPoint(reader);
                        Point point2 = ReadPoint(reader);
                        point = ReadPoint(reader);
                        _context.BezierTo(point1, point2, point);
                        break;
                    }

                    case Command.Close:
                        _context.EndFigure(true);
                        openFigure = false;
                        break;

                    default:
                        throw new NotSupportedException("Unsupported command");
                    }

                    lastCommand = command;
                }

                if (openFigure)
                {
                    _context.EndFigure(false);
                }
            }
        }