Laden...

PictureBox-Problem

Erstellt von Sandybanks vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.387 Views
S
Sandybanks Themenstarter:in
7 Beiträge seit 2007
vor 17 Jahren
PictureBox-Problem

Hallo,

Ich bin noch nicht wirklich erfahren in C#, hab aber schon ein Projekt angefangen.

In diesem Projekt habe ich eine Groupbox. In dieser Groupbox sollen eine erst zur Laufzeit bekannte Anzahl von Bildern und Linien gezeichnet werden. Diese sollen zusätzlich, abhängig von der Anzahl, bestimmte Positionen innerhalb der Groupbox einnehmen.

Kann mir jemand sagen, wie ich da am Besten vorgehe? Es muss nicht gleich lauffähiger Code sein, denn eine gute, prinzipielle Vorgehensweise würde mir hoffentlich schon reichen.

Bis jetzt war ich nähmlich er Auffassung alle zu zeichnenden Elemente in eine PictureBox stecken zu können. Da bin ich aber auf immer mehr Probleme gestoßen.

Danke schon mal für eure Hilfe!

5.742 Beiträge seit 2007
vor 17 Jahren

Hallo, du kannst einfach das Paint Event der Group Box Codieren oder die OnPaint Methode überschreiben.

S
Sandybanks Themenstarter:in
7 Beiträge seit 2007
vor 17 Jahren

Danke mal für die schnelle Antwort.

Dennoch weiß ich noch nicht richtig weiter. Ich denke mal, dass die OnPaint-Fkt nur einmal beim erstellen der GroupBox aufgerufen wird. Ich habe aber keinen statischen Inhalt zu zeichnen, sondern dieser wird durch Auswahl zu Laufzeit bestimmt.

Trotzdem habe ich es wie folgt versucht, jedoch kein sichtbares Ergebnis bekommen:
Ich habe im Designer eine GroupBox groupBox1 erstellt. Und dann die OnPaint-Fkt überladen:


private void groupBox1_OnPaint(PaintEventArgs e)
        {
            Graphics graphic = e.Graphics;
            graphic.DrawLine(new Pen(Color.Black, 5), new Point(0, 0), new Point(300, 300));
        }

Es wird aber keine Linie gezeichnet.

Kannst du mir da weiterhelfen?

5.742 Beiträge seit 2007
vor 17 Jahren

Hallo,
Entschuldigung, dass ich erst jetzt antworte.
Probier es mal auf folgende Art:


public class TestForm : Form
{
    public TestForm()
    {
       InitializeComponent();
       groupBox1.Paint += new PaintEventHandler(groupBox1_Paint);
    }
    private void groupBox1_Paint(object sender, PaintEventArgs e)
    {
       e.Graphics.DrawLine(new Pen(Color.Black), new Point(0, 0), new Point(100, 100));
       //weitere Code
    }
}

Weitere Informationen gibt es hier:
Graphische Programmierung mit GDI+

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Sandybanks,

PictureBoxen kannst du zu Laufzeit mit quasi dem gleichen Code erzeugen und dem Form hinzufügen, mit dem es auch der Designer tut. Denn auch die Controls, die von Anfang angezeigt werden, werden zu Laufzeit erstellt.

Wegen der Anordnung der Bilder und Linien, wäre TableLayoutPanel oder FlowLayoutanel erwägenswert.

herbivore