Ejemplo n.º 1
0
        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();
        }
        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();
        }