private static RectangleF GetRect(FlexChart flexChart, Line line)
        {
            var start  = AnnoPointToCoords(flexChart, line, line.Start);
            var end    = AnnoPointToCoords(flexChart, line, line.End);
            var x      = Math.Min(start.X, end.X);
            var y      = Math.Min(start.Y, end.Y);
            var width  = Math.Abs(start.X - end.X);
            var height = Math.Abs(start.Y - end.Y);

            SizeF contentSize = new SizeF();

            if (!string.IsNullOrEmpty(line.Content))
            {
                using (var g = flexChart.CreateGraphics())
                {
                    contentSize = g.MeasureString(line.Content, line.ContentStyle.Font);
                }
            }

            if (height == 0)             //Horizontal line
            {
                height = line.Style.StrokeWidth + contentSize.Height;
                y      = y - height;
            }
            else if (width == 0)           //Vertical line
            {
                width = line.Style.StrokeWidth + contentSize.Height;
            }
            return(new RectangleF(x, y, width, height));
        }
        private bool LineHitTest(PointF pt, int minDist = 0)
        {
            var line  = annotation as Line;
            var start = Helpers.AnnoPointToCoords(flexChart, line, line.Start);
            var end   = Helpers.AnnoPointToCoords(flexChart, line, line.End);

            //Horizontal or Vertical lines
            if (start.X == end.X || start.Y == end.Y)
            {
                return(BoundingRectangle.Contains(pt));
            }
            else
            {
                var    lineWidth  = line.Style.StrokeWidth;
                double textHeight = 0;
                if (!string.IsNullOrEmpty(line.Content))
                {
                    using (var g = flexChart.CreateGraphics())
                    {
                        textHeight = g.MeasureString(line.Content, line.ContentStyle.Font).Height;
                    }
                }

                return((-pt.X * (start.Y - end.Y) - (start.X * end.Y - end.X * start.Y)) / (end.X - start.X) - (minDist + lineWidth / 2 + textHeight) < pt.Y &&
                       pt.Y < (-pt.X * (start.Y - end.Y) - (start.X * end.Y - end.X * start.Y)) / (end.X - start.X) + (minDist + lineWidth / 2));
            }
        }