private static Coordinate[] GetRectanglePoints(Coordinate center, double angle, double halfBoundary)
        {
            var angleRad = ((360 - angle) % 360) * Math.PI / 180;

            Coordinate[] rect = new Coordinate[]
            {
                new Coordinate(center.X - halfBoundary, center.Y + halfBoundary),
                new Coordinate(center.X + halfBoundary, center.Y + halfBoundary),
                new Coordinate(center.X + halfBoundary, center.Y - halfBoundary),
                new Coordinate(center.X - halfBoundary, center.Y - halfBoundary),
                new Coordinate(center.X - halfBoundary, center.Y + halfBoundary)
            };
            return(LocateUtils.RotateTransform(rect, angleRad, center));
        }
        /// <summary>
        /// Нанесение Text на Graphics.
        /// </summary>
        /// <param name="g">Graphics.</param>
        /// <param name="text">Текст надписи.</param>
        /// <param name="angle">Угол поворота текста.</param>
        /// <param name="coord">Координата, где начинается надпись.</param>
        protected virtual void DrawText(Graphics g, Coordinate coord, string text, double angle)
        {
            var center = new Coordinate(coord.X, coord.Y);

            var l = new List <Coordinate> {
                new Coordinate(center.X + _itemMaxSizePx, center.Y)
            };

            var coordText = LocateUtils.RotateTransform(l, -((angle - 90) * Math.PI / 180), center)[0];

            var x = (float)coordText.X;
            var y = (float)coordText.Y;

            var textStyle = _style as ITextStyle;

            if (textStyle != null)
            {
                g.TextRenderingHint = TextRenderingHint.AntiAlias;
                var size = g.MeasureString(text, textStyle.Font, 1000000, StringFormat.GenericTypographic);
                var cont = g.BeginContainer();

                // Сдвигаем строку на место отрисовки.
                g.TranslateTransform(x, y);

                // Делаем надпись зеркальной.
                g.ScaleTransform(1, -1);

                //Сдвиг по размеру текста.
                x = -size.Width / 2;
                y = -size.Height / 2;

                // Поворачиваем строку на заданный угол.
                g.RotateTransform((float)(angle));

                // Отрисовка белой каёмочки вокруг текста.
                const float dx = 0.02f;
                using (var brushWhite = new SolidBrush(Color.White))
                {
                    g.DrawString(text, textStyle.Font, brushWhite,
                                 new PointF(x - dx, y - dx));
                    g.DrawString(text, textStyle.Font, brushWhite,
                                 new PointF(x + dx, y + dx));
                }
                using (var brushStyled = new SolidBrush(textStyle.TextColor))
                {
                    g.DrawString(text, textStyle.Font, brushStyled, x, y);
                }
                g.EndContainer(cont);
            }
        }