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; } }