void NewData(int nser) { chart.BeginUpdate(); chart.Data.Children.Clear(); int npts = 10; for (int i = 0; i < nser; i++) { chart.Data.Children.Add(SampleData.CreateSeries("series " + i, npts)); } chart.EndUpdate(); lbls.BeginUpdate(); lbls.Children.Clear(); for (int i = 0; i < nser; i++) { for (int j = 0; j < npts; j++) { var lbl = new ChartLabel() { Foreground = Brushes.Red, Content = "ser " + i, SeriesIndex = i, PointIndex = j }; lbls.Children.Add(lbl); } } lbls.EndUpdate(); }
void lbls2_LayoutUpdated(object sender, EventArgs e) { // optimized updating var list = new List <Rect>(); foreach (var lbl in lbls2.Children) { var ilbl = (ILabel)lbl; list.Add(new Rect(ilbl.Position, ilbl.Size)); } int cnt = list.Count; if (cnt == lbls.OccupiedRects.Count) { bool changed = false; for (int i = 0; i < cnt; i++) { if (list[i] != lbls.OccupiedRects[i]) { changed = true; break; } } if (!changed) { return; } } // update occupied rectangles lbls.BeginUpdate(); lbls.OccupiedRects.Clear(); for (int i = 0; i < cnt; i++) { lbls.OccupiedRects.Add(list[i]); } lbls.EndUpdate(); }
public PieArrangerSample() { InitializeComponent(); chart.ChartType = ChartType.Pie; var arranger = new PieArranger(); lbls = new ChartLabels() { LabelArranger = arranger }; chart.View.Layers.Add(lbls); NewData(); SizeChanged += (s, e) => lbls.EndUpdate(); }
void NewData(int cnt = 0) { if (cnt == 0) { cnt = rnd.Next(40, 80); } chart.Data.Children.Clear(); var values = new double[cnt]; for (int i = 0; i < cnt; i++) { values[i] = rnd.Next(1, 100); } chart.Data.Children.Add(new DataSeries() { ValuesSource = values }); lbls.BeginUpdate(); lbls.Children.Clear(); for (int i = 0; i < cnt; i++) { lbls.Children.Add(new ChartLabel() { SeriesIndex = 0, PointIndex = i, Content = "lbl" + i, //Padding = new Thickness(1), BorderThickness = new Thickness(0.5), BorderBrush = Brushes.LightGray, Offset = new Point() }); } lbls.EndUpdate(); }