Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            _colorz = new OuterColorUseList();

            chart1.Series.Clear();
            chart1.ChartAreas.Clear();

            ChartArea area;
            Series    seria;

            DateTime tm0 = DateTime.Parse("12:00:00");
            DateTime tm1;
            TimeSpan ts;

            double y;
            int    l;

            Random rnd;

            switch (comboBox1.SelectedIndex)
            {
            case 0:
                //chart1.Series[0].Name = "Series:";
                chart1.Series.Add("Serie0");
                chart1.Series[0].ChartType = SeriesChartType.Line;

                chart1.ChartAreas.Add("ChartArea0");

                chart1.ChartAreas[0].AxisX.IntervalType      = DateTimeIntervalType.Minutes;
                chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH':'mm':'ss";

                chart1.ChartAreas[0].AxisX.Minimum = 0;
                chart1.ChartAreas[0].AxisX.Minimum = 10;

                break;

            case 1:
                _n = 5;

                for (int i = 0; i < _n; i++)
                {
                    chart1.Series.Add("Serie" + i);
                    chart1.Series[i].ChartType = SeriesChartType.Line;

                    chart1.ChartAreas.Add("Area" + i);
                    chart1.Series[i].ChartArea = "Area" + i;
                }

                break;

            case 2:
                _n = 5;

                for (int i = 0; i < _n; i++)
                {
                    chart1.ChartAreas.Add("Area" + i);
                    chart1.ChartAreas[i].AxisX.IntervalType      = DateTimeIntervalType.Minutes;
                    chart1.ChartAreas[i].AxisX.LabelStyle.Format = "HH':'mm':'ss";
                    chart1.ChartAreas[i].BackColor     = Color.Transparent;
                    chart1.ChartAreas[i].AxisY.Minimum = 0;
                    chart1.ChartAreas[i].AxisY.Maximum = 100;

                    chart1.Series.Add("Serie" + i);
                    chart1.Series[i].ChartType = SeriesChartType.Line;
                    chart1.Series[i].Color     = _colorz.GetColor();
                    chart1.Series[i].ChartArea = "Area" + i;

                    if (i < _n - 1)
                    {
                        chart1.ChartAreas[i].Position.X      = 3;
                        chart1.ChartAreas[i].Position.Y      = 3;
                        chart1.ChartAreas[i].Position.Width  = 80;
                        chart1.ChartAreas[i].Position.Height = 80;
                    }

                    if (i < _n - 1)
                    {
                        for (int j = 0; j < _p; j++)
                        {
                            DateTime x = tm0.AddMinutes(j);
                            y = (i + 1) * j;

                            chart1.Series[i].Points.AddXY(x, y);
                        }
                    }

                    MessageBox.Show(i.ToString());
                }

                break;

            case 3:
                _n = 5;
                _p = 10;

                area = chart1.ChartAreas.Add("Area0");
                AriaPrepare(area, false, tm0.AddMinutes(-60), tm0.AddMinutes(60));

                seria           = chart1.Series.Add("Serie0");
                seria.ChartType = SeriesChartType.Line;
                seria.Color     = Color.Blue;
                seria.ChartArea = area.Name;

                AddPoints(seria, _p, tm0, ELineType.Line, 1);

                _p = 10;
                for (int j = 0; j < _p; j++)
                {
                    DateTime x = tm0.AddMinutes(j);
                    y = j;
                    chart1.Series[0].Points.AddXY(x, y);
                }

                break;

            case 4:
                _n = 5;
                _p = 10;

                area = chart1.ChartAreas.Add("Area0");
                AriaPrepare(area, false, tm0.AddMinutes(5), tm0.AddMinutes(7));

                seria           = chart1.Series.Add("Serie0");
                seria.ChartType = SeriesChartType.Line;
                seria.Color     = Color.Blue;
                seria.ChartArea = area.Name;

                AddPoints(seria, _p, tm0, ELineType.Line, 1);

                break;

            case 5:
                MessageBox.Show(":(");
                break;

            case 6:
                _n = 5;
                _p = 10;

                for (int i = 0; i < _n; i++)
                {
                    area = chart1.ChartAreas.Add("Area" + i);
                    AriaPrepare(area, i > 0, tm0.AddMinutes(-2), tm0.AddMinutes(_p + 2));

                    seria           = chart1.Series.Add("Serie" + i);
                    seria.ChartType = SeriesChartType.Line;
                    seria.Color     = _colorz.GetColor();
                    seria.ChartArea = "Area" + i;

                    area.AxisY.Minimum = -5;
                    area.AxisY.Maximum = (i + 1) * _p + 5;

                    AddPoints(seria, _p, tm0, ELineType.Line, i + 1);
                }

                break;

            case 7:
                _n = 20;

                switch (comboBox2.SelectedIndex)
                {
                case 0: _p = 10; break;

                case 1: _p = 100; break;

                case 2: _p = 1000; break;

                case 3: _p = 5000; break;

                case 4: _p = 10000; break;

                case 5: _p = 20000; break;

                case 6: _p = 50000; break;

                default: _p = 10; break;
                }

                tm0 = DateTime.Now;

                for (int i = 0; i < _n; i++)
                {
                    area = chart1.ChartAreas.Add("Area" + i);
                    AriaPrepare(area, i > 0, tm0.AddMinutes(-60), tm0.AddMinutes(_p + 60));

                    seria = chart1.Series.Add("Serie" + i);
                    chart1.Series[i].Color     = _colorz.GetColor();
                    chart1.Series[i].ChartType = SeriesChartType.FastLine;
                    chart1.Series[i].ChartArea = "Area" + i;

                    AddPoints(seria, _p, tm0, ELineType.Line, i + 1);
                }

                tm1 = DateTime.Now;
                ts  = tm1.Subtract(tm0);

                MessageBox.Show(ts.TotalMilliseconds.ToString());

                break;

            case 8:
                _p = 10;

                chart1.Series.Add("Serie" + 0);
                chart1.Series[0].Color = _colorz.GetColor();

                //
                chart1.Series.Add("Serie" + 1);
                chart1.Series[1].Color = _colorz.GetColor();
                //

                if (comboBox2.SelectedIndex > -1)
                {
                    chart1.Series[0].ChartType = (SeriesChartType)comboBox2.SelectedIndex;
                }
                else
                {
                    chart1.Series[0].ChartType = SeriesChartType.Point;
                }

                //
                chart1.Series[1].ChartType = SeriesChartType.Point;
                //

                area = chart1.ChartAreas.Add("Area0");
                AriaPrepare(area, false, tm0.AddMinutes(-1), tm0.AddMinutes(_p + 1));
                area.AxisX.IntervalType = DateTimeIntervalType.Minutes;
                area.AxisX.Interval     = 1;

                rnd = new Random();
                l   = rnd.NextDouble() < 0.5 ? 0 : 1;

                for (int j = 0; j <= _p; j++)
                {
                    DateTime x = tm0.AddMinutes(j);

                    if (chart1.Series[0].ChartType == SeriesChartType.Area)
                    {
                        chart1.Series[0].Points.AddXY(x, l);
                    }

                    l = rnd.NextDouble() < 0.5 ? 0 : 1;
                    chart1.Series[0].Points.AddXY(x, l);

                    //
                    chart1.Series[1].Points.AddXY(x, l);
                    //
                }

                break;

            case 9:
                _n = 18;

                rnd = new Random();

                switch (comboBox2.SelectedIndex)
                {
                case 0: _p = 10; break;

                case 1: _p = 100; break;

                case 2: _p = 1000; break;

                case 3: _p = 5000; break;

                case 4: _p = 10000; break;

                case 5: _p = 20000; break;

                case 6: _p = 50000; break;

                default: _p = 10; break;
                }

                tm0 = DateTime.Now;

                for (int i = 0; i < _n; i++)
                {
                    seria           = chart1.Series.Add("Serie" + i);
                    seria.Color     = _colorz.GetColor();
                    seria.ChartType = SeriesChartType.Area;

                    area = chart1.ChartAreas.Add("Area" + i);
                    AriaPrepare(area, true, tm0, tm0.AddMinutes(_p));
                    chart1.ChartAreas[i].AxisY.Minimum = 0;
                    chart1.ChartAreas[i].AxisY.Maximum = 1;

                    chart1.ChartAreas[i].Position.X      = 1;
                    chart1.ChartAreas[i].Position.Y      = 90 - 5 * i;
                    chart1.ChartAreas[i].Position.Width  = 80;
                    chart1.ChartAreas[i].Position.Height = 10;

                    seria.ChartArea = area.Name;

                    if (i > 0)
                    {
                        chart1.ChartAreas[i].AxisX.LabelStyle.ForeColor = Color.Transparent;
                        //chart1.ChartAreas[i].AxisY.Enabled = AxisEnabled.False;
                    }

                    l = rnd.NextDouble() < 0.5 ? 0 : 1;

                    for (int j = 0; j <= _p; j++)
                    {
                        DateTime x = tm0.AddMinutes(j);

                        chart1.Series[i].Points.AddXY(x, l);
                        l = rnd.NextDouble() < 0.5 ? 0 : 1;
                        chart1.Series[i].Points.AddXY(x, l);
                    }
                }

                ts = DateTime.Now.Subtract(tm0);
                MessageBox.Show(ts.TotalMilliseconds.ToString());

                break;

            case 10:
                _n = 20;

                int k = comboBox2.SelectedIndex;

                switch (k)
                {
                case 0:
                case 1:
                    _p = 2000;
                    break;

                case 2:
                case 3:
                    _p = 5000;
                    break;

                case 4:
                case 5:
                    _p = 20000;
                    break;

                default:
                    _p = 2000;
                    break;
                }

                tm0 = DateTime.Now;
                TimeSpan ts1 = tm0.Subtract(tm0);

                var srs = new Series[_n];
                var ars = new ChartArea[_n];

                for (int i = 0; i < _n; i++)
                {
                    switch (k)
                    {
                    case 0:
                    case 2:
                    case 4:
                        srs[i]           = chart1.Series.Add("Serie" + i);
                        ars[i]           = chart1.ChartAreas.Add("Area" + i);
                        srs[i].ChartArea = "Area" + i;
                        break;

                    case 1:
                    case 3:
                    case 5:
                        srs[i] = new Series("Serie" + i);
                        ars[i] = new ChartArea("Area" + i);
                        break;

                    default:
                        srs[i]           = chart1.Series.Add("Serie" + i);
                        ars[i]           = chart1.ChartAreas.Add("Area" + i);
                        srs[i].ChartArea = "Area" + i;
                        break;
                    }

                    srs[i].Color     = _colorz.GetColor();
                    srs[i].ChartType = SeriesChartType.FastLine;

                    AriaPrepare(ars[i], i > 0, tm0.AddMinutes(-60), tm0.AddMinutes(_p + 60));

                    //srs[i].ChartArea = "Area" + i;

                    ts1 = DateTime.Now.Subtract(tm0);

                    AddPoints(srs[i], _p, tm0, ELineType.Line, i);
                    //AddPoints(srs[i], _p, tm0, ELineType.Sin, i + 1);
                    //AddPoints(srs[i], _p, tm0, ELineType.Random, 1);
                }

                switch (k)
                {
                case 1:
                case 3:
                case 5:
                    for (int i = 0; i < _n; i++)
                    {
                        chart1.Series.Add(srs[i]);
                        chart1.ChartAreas.Add(ars[i]);
                        srs[i].ChartArea = "Area" + i;
                    }

                    break;
                }

                tm1 = DateTime.Now;
                ts  = tm1.Subtract(tm0);

                MessageBox.Show(ts1.TotalMilliseconds + "\n" + ts.TotalMilliseconds);

                break;

            default:
                MessageBox.Show(":(");
                break;
            }
        }