/// <summary>
        /// Метод выполняет отрисовку линии в открытый файл
        /// </summary>
        /// <param name="X1">Абсцисса начала линии</param>
        /// <param name="Y1">Ордината начала линии</param>
        /// <param name="X2">Абсцисса конца линии</param>
        /// <param name="Y2">Ордината конца линии</param>
        /// <param name="LineWidth">Толщина линии</param>
        /// <param name="LineColor">Цвет линии</param>
        /// <returns>Возвращает true в случае успеха или false в случае некорректного задания размеров (выход за область отрисовки)</returns>
        public bool DrawLine(double X1, double Y1, double X2, double Y2, uint LineWidth, Color LineColor)
        {
            // Контроль состояния
            if (initResult != VectorAdapterInitResults.Opened)
            {
                return(false);
            }

            // Контроль значений
            // Если вся линия выходит за границу отрисовки
            if ((X1 < clipBoxX1) && (X2 < clipBoxX1) ||
                (X1 > clipBoxX2) && (X2 > clipBoxX2) ||
                (Y1 < clipBoxY1) && (Y2 < clipBoxY1) ||
                (Y1 > clipBoxY2) && (Y2 > clipBoxY2) ||
                (LineWidth == 0))
            {
                return(false);
            }

            // Пересчёт координат
            double x1 = 0.0, x2 = 0.0, y1 = 0.0, y2 = 0.0;

            VectorAdapterSupport.InboundCoords(clipBoxX1, clipBoxX2, clipBoxY1, clipBoxY2,
                                               X1, X2, Y1, Y2, out x1, out x2, out y1, out y2);

            // Отрисовка
            g.DrawLine(new Pen(LineColor, LineWidth), (float)x1, (float)y1, (float)x2, (float)y2);
            return(true);
        }
        /// <summary>
        /// Метод выполняет отрисовку линии в открытый файл
        /// </summary>
        /// <param name="X1">Абсцисса начала линии</param>
        /// <param name="Y1">Ордината начала линии</param>
        /// <param name="X2">Абсцисса конца линии</param>
        /// <param name="Y2">Ордината конца линии</param>
        /// <param name="LineWidth">Толщина линии</param>
        /// <param name="LineColor">Цвет линии</param>
        /// <returns>Возвращает true в случае успеха или false в случае некорректного задания размеров (выход за область отрисовки)</returns>
        public bool DrawLine(double X1, double Y1, double X2, double Y2, uint LineWidth, Color LineColor)
        {
            // Контроль состояния
            if (initResult != VectorAdapterInitResults.Opened)
            {
                return(false);
            }

            // Контроль значений
            // Если вся линия выходит за границу отрисовки
            if ((X1 < clipBoxX1) && (X2 < clipBoxX1) ||
                (X1 > clipBoxX2) && (X2 > clipBoxX2) ||
                (Y1 < clipBoxY1) && (Y2 < clipBoxY1) ||
                (Y1 > clipBoxY2) && (Y2 > clipBoxY2) ||
                (LineWidth == 0))
            {
                return(false);
            }

            // Пересчёт координат
            double x1 = 0.0, x2 = 0.0, y1 = 0.0, y2 = 0.0;

            VectorAdapterSupport.InboundCoords(clipBoxX1, clipBoxX2, clipBoxY1, clipBoxY2,
                                               X1, X2, Y1, Y2, out x1, out x2, out y1, out y2);

            // Отрисовка
            SW.WriteLine("<line stroke=\"#" + (LineColor.ToArgb() & 0xFFFFFF).ToString("X06") +
                         "\" stroke-width=\"" + ((double)LineWidth / 2.0).ToString(cie.NumberFormat) +
                         "\" x1=\"" + x1.ToString(cie.NumberFormat) +
                         "\" y1=\"" + y1.ToString(cie.NumberFormat) +
                         "\" x2=\"" + x2.ToString(cie.NumberFormat) +
                         "\" y2=\"" + y2.ToString(cie.NumberFormat) + "\"/>");
            return(true);
        }
        private bool CreateEllipse(double X1, double Y1, double X2, double Y2, uint LineWidth, Color RectangleColor, bool Fill)
        {
            // Контроль состояния
            if (initResult != VectorAdapterInitResults.Opened)
            {
                return(false);
            }

            // Контроль значений
            // Если вся линия выходит за границу отрисовки
            if ((X1 < clipBoxX1) && (X2 < clipBoxX1) ||
                (X1 > clipBoxX2) && (X2 > clipBoxX2) ||
                (Y1 < clipBoxY1) && (Y2 < clipBoxY1) ||
                (Y1 > clipBoxY2) && (Y2 > clipBoxY2) ||
                (LineWidth == 0))
            {
                return(false);
            }

            // Пересчёт координат
            double x1 = 0.0, x2 = 0.0, y1 = 0.0, y2 = 0.0;

            VectorAdapterSupport.InboundCoords(clipBoxX1, clipBoxX2, clipBoxY1, clipBoxY2,
                                               X1, X2, Y1, Y2, out x1, out x2, out y1, out y2);

            // Отрисовка
            if (Fill)
            {
                SW.WriteLine("<ellipse fill=\"#" + (RectangleColor.ToArgb() & 0xFFFFFF).ToString("X06") +
                             "\" cx=\"" + (x1 + (x2 - x1) / 2).ToString(cie.NumberFormat) +
                             "\" cy=\"" + (y1 + (y2 - y1) / 2).ToString(cie.NumberFormat) +
                             "\" rx=\"" + ((x2 - x1) / 2).ToString(cie.NumberFormat) +
                             "\" ry=\"" + ((y2 - y1) / 2).ToString(cie.NumberFormat) + "\"/>");
            }
            else
            {
                SW.WriteLine("<ellipse stroke=\"#" + (RectangleColor.ToArgb() & 0xFFFFFF).ToString("X06") +
                             "\" stroke-width=\"" + ((double)LineWidth / 2.0).ToString(cie.NumberFormat) +
                             "\" fill=\"none" +
                             "\" cx=\"" + (x1 + (x2 - x1) / 2).ToString(cie.NumberFormat) +
                             "\" cy=\"" + (y1 + (y2 - y1) / 2).ToString(cie.NumberFormat) +
                             "\" rx=\"" + ((x2 - x1) / 2).ToString(cie.NumberFormat) +
                             "\" ry=\"" + ((y2 - y1) / 2).ToString(cie.NumberFormat) + "\"/>");
            }
            return(true);
        }
        private bool CreateEllipse(double X1, double Y1, double X2, double Y2, uint LineWidth, Color RectangleColor, bool Fill)
        {
            // Контроль состояния
            if (initResult != VectorAdapterInitResults.Opened)
            {
                return(false);
            }

            // Контроль значений
            // Если вся линия выходит за границу отрисовки
            if ((X1 < clipBoxX1) && (X2 < clipBoxX1) ||
                (X1 > clipBoxX2) && (X2 > clipBoxX2) ||
                (Y1 < clipBoxY1) && (Y2 < clipBoxY1) ||
                (Y1 > clipBoxY2) && (Y2 > clipBoxY2) ||
                (LineWidth == 0))
            {
                return(false);
            }

            // Пересчёт координат
            double x1 = 0.0f, x2 = 0.0f, y1 = 0.0, y2 = 0.0;

            VectorAdapterSupport.InboundCoords(clipBoxX1, clipBoxX2, clipBoxY1, clipBoxY2,
                                               X1, X2, Y1, Y2, out x1, out x2, out y1, out y2);

            // Отрисовка
            if (Fill)
            {
                g.FillEllipse(new SolidBrush(RectangleColor), (float)x1, (float)y1, (float)(x2 - x1), (float)(y2 - y1));
            }
            else
            {
                g.DrawEllipse(new Pen(RectangleColor, LineWidth), (float)x1, (float)y1, (float)(x2 - x1), (float)(y2 - y1));
            }
            return(true);
        }