In C# einen Kreis/ein Quadrat zeichnen?
Hallo Community.
Ich möchte in C# ein Programm basteln, und brauche dazu aber noch zwei Funktionen: Eine soll einen Kreis an einer bestimmten Stelle zeichnen, also z.B. "zeichnekreis(höhe, breite, x, y)".
Die zweite soll ein Quadrat zeichnen, also z.B. "zeichnequadrat(länge, x, y)"
Weiß jemand einen Quellcode dafür? Ich habe zwar schon im Internet geguckt, aber die, die ich gefunden habe funktionieren nicht. Also wenn möglich bitte mit Erklärungen :)
3 Antworten
Beispiel:
Pen pen = new Pen(Color.Black);
pictureBox1.CreateGraphics().DrawEllipse(pen, 30, 30, 10, 10);
pictureBox1.CreateGraphics().DrawRectangle(pen, 50, 50, 10, 10);
Dasselbe mit "Fill" statt "Draw". Hast Du in Deiner IDE keine Syntax-Vervollständigung?!? Benutzt Du überhaupt eine "IDE"?
Natürlich habe ich geguckt ob ich mit der Vervollständigung einen solchen Befehl finde, aber ich habe gedacht, dass fängt auch mit draw an^^ Man kann ja auch nicht alles wissen. :)
Man kann ja auch nicht alles wissen. :)
"Man muss nicht alles wissen, man muss nur wissen, wo es steht", sagte mal ein berühmter Mann. ;)
Wie du allerdings darauf kommst, dass "Fill" (= Füllen) mit "Draw" (= Zeichnen) "anfängt", müsstest du mir mal genauer erklären...
Baust du ne Windows-Form Anwendung? Wenn ja, dann kannst du dich zum Beispiel in das Paint-Event hängen und pinseln.
public Form1()
{
InitializeComponent();
this.Paint += new PaintEventHandler(Form1_Paint);
}
void Form1_Paint(object sender, PaintEventArgs e)
{
using (Graphics g = e.Graphics)
{
Pen pen = new Pen(Brushes.Blue, 2);
g.DrawRectangle(pen, new Rectangle(new Point(10, 10), new Size(10, 10)));
g.DrawEllipse(pen, new Rectangle(new Point(50, 50), new Size(20, 20)));
}
}
Danke für die Antwort, aber Gruffalo's Code finde ich praktischer.
Tatsächlich? Minimiere deine Anwendung und stelle sie wiederher. Deine Zeichnungen sind ebenfalls fort. Der Code wird nämlich nur einmalig ausgeführt und bei jedem Neuzeichnen nicht erneut aufgerufen.
Anders sieht das beim Paint-Ereignis aus, dass jedesmal aufgerufen wird, wenn ein Neuzeichnen angefordert wurde. Daher gibt es im Grunde keinen sinnvollen Nutzen der Funktion "CreateGraphics". Noch dazu wurde in seinem Code das Graphics-Objekt nicht verworfen. Ich sehe jetzt schon MemoryLeaks vor meinem geistigen Auge ...
Anfänger wissen aber häufig alles besser.
Das Copyriht Zeichen ist bereits in vielen Integriert und muss nicht gebastelt werden.
Dankeschön, aber kann ich das noch irgendwie mit einer Farbe füllen?