public void UpdateImage() //Aktualisiert das angezeigte Bild { b = new Bitmap(Convert.ToInt32(Math.Pow(2, my_Baum.GetDeep()) * 50 - 50), my_Baum.GetDeep() * 50); //Breite: 2^Tiefe * x; Höhe: Tiefe * x //Grund für so große Breite: Abstand von Ästen in tiefster Verzweigung unabhängig von Tiefe //Vorteil: alles in jeder Situation gut lesbar //Nachteil: extreme Platzverschwendung, da Platz nur bei Ausgeglichenen Bäumen benötigt g = Graphics.FromImage(b); g.FillRectangle(new SolidBrush(Color.LightGray), new Rectangle(0, 0, b.Width, b.Height)); foreach (PunktTextComboAlsTupelErsatz p in GetPoints(my_Baum, g)) { //An allen Knoten Punkt und deren Wert zeichnen g.FillEllipse(new SolidBrush(Color.Red), new Rectangle(p.Point.X - 20, p.Point.Y - 25 - 20, 40, 40)); g.DrawString(p.Text, new Font("Impact", 20), new SolidBrush(Color.Black), new Point(p.Point.X, p.Point.Y - 25), new StringFormat { LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center }); } if (t != null) { t.SetImage(b); //Bild aktualisieren } }
private void resetdeep(string text) { lb_deep.Text = "Tiefe: " + my_tree.GetDeep().ToString(); rTB_out.Text = text; }