internal static RectangleF GetRect(FlexChart flexChart, IAnnotationBase anno) { var annotaion = anno as AnnotationBase; PointF point = PointF.Empty; _Size size; SizeF sz; if (annotaion is Line) { return(GetRect(flexChart, annotaion as Line)); } else if (annotaion is Polygon) { return(GetRect(flexChart, annotaion as Polygon)); } else { size = anno.GetSize(); sz = new SizeF((float)size.Width, (float)size.Height); if (annotaion is Text) { sz = TextRenderer.MeasureText(((Text)annotaion).Content, ((Text)annotaion).ContentStyle.Font); } PointF loc = AnnoPointToCoords(flexChart, annotaion, annotaion.Location); point.X = (float)(loc.X - size.Width / 2); point.Y = (float)(loc.Y - size.Height / 2); } return(new RectangleF(point.X, point.Y, sz.Width, sz.Height)); }
internal static Rect GetRect(C1FlexChart flexChart, IAnnotationBase anno) { var annotaion = anno as AnnotationBase; Point point = new Point(); _Size size; Size sz; if (annotaion is Line) { return(GetRect(flexChart, annotaion as Line)); } else if (annotaion is Polygon) { return(GetRect(flexChart, annotaion as Polygon)); } else { size = anno.GetSize(); sz = new Size((float)size.Width, (float)size.Height); if (annotaion is Text) { TextBlock txtBlock = new TextBlock(); txtBlock.FontStyle = (((Text)annotaion).Style.FontStyle); txtBlock.Text = ((Text)annotaion).Content; txtBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); sz = txtBlock.DesiredSize; } Point loc = AnnoPointToCoords(flexChart, annotaion, annotaion.Location); point.X = (float)(loc.X - size.Width / 2); point.Y = (float)(loc.Y - size.Height / 2); } return(new Rect(point.X, point.Y, sz.Width, sz.Height)); }