Laden...

Linie bei Größenänderung des Formulars automatisch mit vergrößern

Erstellt von Szebin vor 3 Jahren Letzter Beitrag vor 3 Jahren 300 Views
S
Szebin Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren
Linie bei Größenänderung des Formulars automatisch mit vergrößern

Hallo,

mittels c# zeichne ich zwei Linien, das funktioniert auch alles ganz prima.
Wenn das Formular Main mittels ziehen vergrößert wird, bleiben die Linien in ihrer vordefinierten Größe.
Gibt es eine Möglichkeit, bei Vergrößerung des Formulars Main die Linien automatisch entsprechend auch zu vergrößern?


        private void Panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gObject = Panel1.CreateGraphics();
            Brush dimGray = new SolidBrush(Color.DimGray);
            Pen dimGrayPen = new Pen(dimGray, 1);

            gObject.DrawLine(dimGrayPen, new Point(0, 0), new Point(276, 0));
            gObject.DrawLine(dimGrayPen, new Point(0, 27), new Point(276, 27));
        }

Ich danke für jede Antwort.
Sabine

4.931 Beiträge seit 2008
vor 3 Jahren

Hallo und willkommen,

bisher verwendest du ja absolute Koordinaten (276, 27) - diese solltest du dann von der Fenstergröße (Form.Width, Form.Height) abhängig machen, bzw. von der Panelgröße. Dazu sollte es dann per Anchor bzw. Dock entsprechend eingestellt sein, s.a. Manage WinForm controls using the Anchor and Dock properties.

Außerdem solltest du nicht CreateGraphics() benutzen, sondern e.Graphics, s.a. [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox).
Und die GDI-Objekte, wie Brush, Pen, etc., müssen alle wieder per Dispose (bzw. besser automatisch über die using-Anweisung) freigegeben werden!

S
Szebin Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren

Hallo Th69,

vielen lieben Dank für Deine Tips. Diese werde ich mir sogleich anschauen und aneignen. Da ich noch sehr am Anfang stehe, mache ich bestimmt noch viele Fehler und bin für jeden Hinweis/Tip sehr dankbar.

Ich wünsche Dir einen schönen Wochenanfang
Sabine

S
Szebin Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren

Jetzt kommt das Ergebnis:


            Graphics g = e.Graphics;
            Brush dimGray = new SolidBrush(Color.DimGray);
            Pen dimGrayPen = new Pen(dimGray, 1);

            g.DrawLine(dimGrayPen, new Point(0, 0), new Point(Panel1.Width, 0));
            g.DrawLine(dimGrayPen, new Point(0, Panel1.Height-1), new Point(Panel1.Width, Panel1.Height-1));

@Th69. Vielen Dank für Deine Tips 🙂