Erweiterte Programmierthemen: Diagramme

Eine Funktionalität zum Zeichnen von Diagrammen mit Windows Forms befindet sich im Namensraum System.Windows.Forms.DataVisualization.Charting und benötigt das .NET-Framework 4.0 oder höher. Das Hauptelement des Diagramms ist Chart.
Die Klasse Series stellt eine Wertserie zur Verfügung. Ein Diagramm kann mehrere Serien (oder auch Datenreihen genannt) haben. Hierfür müssen wir der Eigenschaft Series des Chart-Objekts, Datenreihen mit Hilfe der Funktion Add() zuweisen. Die Klasse Series selbst besitzt die Eigenschaft Points. Hier kann über die Eigenschaft AddXY() ein Wert für die X- und Y-Achse und somit ein einzelner Datensatz, hinzugefügt werden. Die Art der Serie (also Linie, Balken, etc.) kann über die Eigenschaft ChartType und einen Wert der Enumeration SeriesChartType festgelegt werden. In C# ist es dadurch möglich, dass ein Diagramm mehrere Serien besitzt, welche unterschiedliche Diagrammarten haben.

Form1.cs

using System;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;      // wichtig: benötigt das .NET-Framework 4.0 oder höher

namespace CSV20.Diagramme
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Random oZufall = new Random();

            Series oSerieA1 = new Series("Serie A1");
            for (int i = 1; i < 25; i++)
                oSerieA1.Points.AddXY(i, oZufall.Next(0, 1001));
            chart1.Series.Add(oSerieA1);

            Series oSerieA2 = new Series("Serie A2");
            for (int i = 1; i < 25; i++)
                oSerieA2.Points.AddXY(i, oZufall.Next(0, 1001));
            chart1.Series.Add(oSerieA2);

            Series oSerieA3 = new Series("Serie A3");
            for (int i = 1; i < 25; i++)
                oSerieA3.Points.AddXY(i, oZufall.Next(0, 1001));
            chart1.Series.Add(oSerieA3);

            Series oSerieB1 = new Series("Serie B1");
            oSerieB1.ChartType = SeriesChartType.Line;
            oSerieB1.BorderWidth = 3;
            for (int i = 1; i < 25; i++)
                oSerieB1.Points.AddXY(i, oZufall.Next(0, 1001));
            chart1.Series.Add(oSerieB1);

            Series oSerieB2 = new Series("Serie B2");
            oSerieB2.ChartType = SeriesChartType.Line;
            oSerieB2.BorderWidth = 3;
            for (int i = 1; i < 25; i++)
                oSerieB2.Points.AddXY(i, oZufall.Next(0, 1001));
            chart1.Series.Add(oSerieB2);
        }
    }
}
Download

LinksRechts