[Zedgraph] Textobjekt (Label) einfügen

TextObj text = new TextObj("Zeile1\nZeile2\nZeile3", 0.2F, 0.5F, CoordType.PaneFraction);

text.Location.AlignH = AlignH.Center;
text.Location.AlignV = AlignV.Center;
text.FontSpec.Border.IsVisible = false; // ohne Rahmen
text.FontSpec.Fill = new Fill(Color.White, Color.Blue, 45F);
text.FontSpec.StringAlignment = StringAlignment.Center;

zedGraph.GraphPane.GraphObjList.Add(text);

[Zedgraph] MouseMove akt. Mausposition ausgeben

private void zedGraph_MouseMove(object sender, MouseEventArgs e)
{
    PointF mousePt = new PointF(e.X, e.Y);
            
    GraphPane gpMousePane = zedGraph.MasterPane.FindChartRect(mousePt);

    if (gpMousePane != null)
    {
        double x;
        double y;

        gpMousePane.ReverseTransform(mousePt, out x, out y);

        // slXY ist ein ToolStripStatusLabel auf einem StatusStrip
        slXY.Text = "Zeit: " + DateTime.FromOADate(x).ToString("dd.MM.yyyy HH:mm:ss:fff") + ", Wert: " + y.ToString("f2");
    }
    else
    {
        slXY.Text = string.Empty;
    }
}

[Zedgraph] Legende positionieren

GraphPane myPane = zedGraph.GraphPane;

myPane.Legend.IsVisible = true;
myPane.Legend.Position = LegendPos.Float; // freie Positionierung
myPane.Legend.Location = new Location(0.98f, 0.02f, CoordType.PaneFraction, AlignH.Right, AlignV.Top); // rechts oben in der Ecke
myPane.Legend.Fill.Color = Color.White;
myPane.Legend.FontSpec.Size = 10;
myPane.Legend.IsHStack = false; // Bezeichner untereinander

[Zedgraph] eigenes Scalenformat für die x- und y-Achse festlegen

// für die X-Achse
zedGraph.GraphPane.XAxis.ScaleFormatEvent += new Axis.ScaleFormatHandler(XAxis_ScaleFormatEvent); 
 
public string XAxis_ScaleFormatEvent(GraphPane pane, Axis axis, double val, int index) 
{
    return val.ToString("f1") + " kg";
}

// für die Y-Achse
zedGraph.GraphPane.YAxis.ScaleFormatEvent += new Axis.ScaleFormatHandler(YAxis_ScaleFormatEvent); 
 
string YAxis_ScaleFormatEvent(GraphPane pane, Axis axis, double val, int index)
{
    // mit Tausender-Trennzeichen und zwei Nachkommastellen
    return val.ToString("n2");
}

// für den Titel der Y-Achse, da bei großen Zahlen häufig an den Standardtitel ein (10^3) angehangen wird
zedGraph.GraphPane.YAxis.ScaleTitleEvent += new Axis.ScaleTitleEventHandler(YAxis_ScaleTitleEvent);

string YAxis_ScaleTitleEvent(Axis axis)
{
    return "Wert [€]";
}

[Zedgraph] lineare Regression

// beliebige Kurve erzeugen
ZedGraph.PointPairList pplValues = new ZedGraph.PointPairList();

pplValues.Add(1.0, 2.0);
pplValues.Add(1.5, 0.5);
pplValues.Add(2.0, 1.0);
pplValues.Add(2.5, 4.0);

// Regression über die Kurvenpunkte durchführen und Punkte der Regressionsgerade in pplReg speichern
ZedGraph.PointPairList pplReg = pplTemp.LinearRegression(pplValues, pplValues.Count);

// Kurve zeichnen
ZedGraph.LineItem liLineValues = zedGraph.GraphPane.AddCurve("Values", pplValues, Color.Red, SymbolType.Circle);

// Regressionsgerade zeichnen
ZedGraph.LineItem liReg = zedGraph.GraphPane.AddCurve("Regression", pplReg, Color.Green, SymbolType.None);

Systemfarben (KnownColors) in ComboBox anzeigen

private void Form1_Load(object sender, EventArgs e)
{
    // wichtige Einstellungen für die 2 ComboBoxen
    comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
    comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
    comboBox2.DrawMode = DrawMode.OwnerDrawFixed;
    comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;

    // alle bekannte Farben im System in ein Array schreiben
    Array caKnown = Enum.GetValues(typeof(System.Drawing.KnownColor));

    foreach (KnownColor kC in caKnown)
    {
        Color curC = Color.FromKnownColor(kC);

        // wenn Systemfarbe, dann in ComboBox 1
        if (curC.IsSystemColor)
        {
            // Systemfarben
            comboBox1.Items.Add(curC.Name.ToString());
        }
        else
        {
            // restl. Farben in ComboBox 2
            comboBox2.Items.Add(curC.Name.ToString());
        }
    }
}

// diese Funktion sollte jeder der 2 Comboboxen zugewiesen werden (DrawItem)
private void comboBox_DrawItem(object sender, DrawItemEventArgs e)
{
    if (e.Index >= 0)
    {
        ComboBox cboBox = sender as ComboBox;

        if (cboBox != null)
        {
            // links einen Bereich definieren, wo die Farbe angezeigt wird
            Rectangle rc_left = new Rectangle(e.Bounds.X, e.Bounds.Y, 20, e.Bounds.Height);
            // rechts einen Bereich definieren, wo der Name angezeigt wird
            Rectangle rc_right = new Rectangle(e.Bounds.X + 20, e.Bounds.Y, e.Bounds.Width - 20, e.Bounds.Height);

            // akt. Farbe zum Namen heraussuchen
            KnownColor K = (KnownColor)System.Enum.Parse(typeof(KnownColor), cboBox.Items[e.Index].ToString());
            Color C = System.Drawing.Color.FromKnownColor(K);

            // kl. Rahmen um den Eintrag zeichnen
            e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.White), 2), rc_left);

            // links das Kästchen für die Hintergrundfarbe anzeigen
            e.Graphics.FillRectangle(new SolidBrush(C), rc_left);

            // rechts den Text (Farbnamen) anzeigen
            e.Graphics.DrawString(cboBox.Items[e.Index].ToString(), new Font("Ariel", 8), new SolidBrush(Color.Black), rc_right, StringFormat.GenericDefault);
        }
    }
}