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
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!
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
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 🙂