[C#] Rectangles zeichnen in .NET

Drucken
( 0 Votes ) 
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 07.12.2011 Zuletzt aktualisiert am 02.02.2012 Geschrieben von Jonny132
Um in Windows zu zeichnen gibt es einige Möglichkeiten,
jedoch gibt es (bis auf einzelfälle) nur einen richtigen Weg wie man so etwas realisiert.
Ich zeige euch nun ein Beispiel in dem Erklärt wird wie man einfach ein neues Quadrad bei Mausklick auf die aktuellen Koordinaten zeichnet.
Dazu erstellen wir ein neues Windows - Form - Projekt und wechseln in die Codeansicht des MainForms.

Zuerst initialisieren wir eine globale Liste mit dem Listentyp Rectangles.

Initialisieren der List

List<Rectangle> rectangles;

Form Load Event

 private void Form1_Load(object sender, EventArgs e)
 {
   rectangles = new List<Rectangle>();
   this.MouseClick += new MouseEventHandler(Form1_MouseClick);
   this.Paint += new PaintEventHandler(Form1_Paint);
 }
Im Form Load Event erstellen wir eine neue Instanz von der List damit diese nicht mehr null ist.
Dann abbonieren wir noch das MouseClick und Paint Event der Form.
Das MouseClick Event wird ausgeführt sobald der User irgendwo auf der Form per Maustaste gedrückt hat.
Das Paint Event wird ausgeführt sobald die Form es für nötig hält den Inhalt (Controls) neu zu zeichnen.

MouseClick Ereignis

 void Form1_MouseClick(object sender, MouseEventArgs e)
 {
   rectangles.Add(new Rectangle(e.X, e.Y, 10, 10));
   this.Refresh();
 }
Da wir das MousClick Ereignis abboniert haben, können wir nun auf Mausklicks reagieren.
Wir fügen nun der globalen Liste ein neues Rectangle an der geklickten Position,
diese finden wir unter den EventArgs des Ereignisses e. Die größe des Quadrats besitzt 10x10 Pixel.
Dannach zwingen wir per this.Refresh() die Form dazu sich neu zu zeichnen,
somit wird das Paint Event der Form aufgerufen.

Form Paint Event

 void Form1_Paint(object sender, PaintEventArgs e)
 {
   foreach (Rectangle rectangle in rectangles)
   {
     e.Graphics.FillRectangle(new SolidBrush(Color.Blue), rectangle);
   } 
 }

In diesem Event iterieren wir nun über die globale Liste der Rectangles in der wir bei jedem Klick ein neues hinzugefügt haben.
Dann greiffen wir auf die EventArgs des Paint Events zu und benützen die Methode Graphics.FillRectangle.
Dieser Methode übergeben wir einen SolidBrush mit der Farbe blau und das Rectangle.

Das wars auch schon. Um das ganze auszuprobieren debuggen Sie das Programm und klicken wie wild drauf los ;)
Beispiel Rectangles Zeichnen .NET


    Veröffentlichen Sie ihre Kommentare ...