void UpdateLabels() { if (_loaded) { if (Chart != null) { var state = new ChartState(Chart); if (!state.Equals(_state)) { Debug.WriteLine("ChartLabels_LayoutUpdates -> Render"); _state = state; Render(); } } } }
void UpdateLabels() { if (_loaded) { if (Chart != null) { var state = new ChartState(Chart); if (!state.Equals(_state)) { Debug.WriteLine("ChartLabels_LayoutUpdates -> Render"); _state = state; Render(); } } } }
void Render() { if (!_loaded || UpdateCount > 0) return; if (Chart != null) { var prect = Chart.View.PlotRect; var bnds = new Rect(0,0,prect.Width, prect.Height); bnds.Inflate(1, 1); var offset = Chart.TranslatePoint(new Point(), (UIElement)this.Parent); offset.X = prect.X - offset.X; offset.Y = prect.Y - offset.Y; foreach (var label in Children) { if (!base.Children.Contains(label)) base.Children.Add(label); var line = label.ConnectingLine; if (!base.Children.Contains(line)) base.Children.Add(line); if (!Chart.ChartType.ToString().StartsWith("Pie")) { label.UpdateAttachPoint(Chart, offset); if (bnds.Contains(label.AttachPoint)) label.Visibility = Visibility.Visible; else label.Visibility = Visibility.Collapsed; } else label.UpdateAttachPoint(Chart, new Point()); } if (LabelArranger != null) LabelArranger.Arrange(Children.ToArray(), OccupiedRects, new Rect(0, 0, prect.Width, prect.Height)); foreach (var label in Children) { var line = label.ConnectingLine; var pt = label.AttachPoint; line.X1 = pt.X; line.Y1 = pt.Y; var pt1 = LabelHelper.GetConnectingPoint(label); if (!double.IsNaN(pt1.X) && !double.IsNaN(pt1.Y)) { line.X2 = pt1.X; line.Y2 = pt1.Y; } } _state = new ChartState(Chart); } }
void Render() { if (!_loaded || UpdateCount > 0) { return; } if (Chart != null) { var prect = Chart.View.PlotRect; var bnds = new Rect(0, 0, prect.Width, prect.Height); bnds.Inflate(1, 1); var offset = Chart.TranslatePoint(new Point(), (UIElement)this.Parent); offset.X = prect.X - offset.X; offset.Y = prect.Y - offset.Y; foreach (var label in Children) { if (!base.Children.Contains(label)) { base.Children.Add(label); } var line = label.ConnectingLine; if (!base.Children.Contains(line)) { base.Children.Add(line); } if (!Chart.ChartType.ToString().StartsWith("Pie")) { label.UpdateAttachPoint(Chart, offset); if (bnds.Contains(label.AttachPoint)) { label.Visibility = Visibility.Visible; } else { label.Visibility = Visibility.Collapsed; } } else { label.UpdateAttachPoint(Chart, new Point()); } } if (LabelArranger != null) { LabelArranger.Arrange(Children.ToArray(), OccupiedRects, new Rect(0, 0, prect.Width, prect.Height)); } foreach (var label in Children) { var line = label.ConnectingLine; var pt = label.AttachPoint; line.X1 = pt.X; line.Y1 = pt.Y; var pt1 = LabelHelper.GetConnectingPoint(label); if (!double.IsNaN(pt1.X) && !double.IsNaN(pt1.Y)) { line.X2 = pt1.X; line.Y2 = pt1.Y; } } _state = new ChartState(Chart); } }