Forum: PC-Programmierung Klasse in Visual C# um Rechtecke zu zeichnen


von flacks (Gast)


Lesenswert?

Hallo,

in frühere Visual Basics gab es immer eine Klasse "Shape", die einfach 
nur eine Form (Rechteck, Kreis) in dem Fenster darstellen.

Gibt es das in Visual C# 2008? Bzw. welche .NET-Klasse ist das?

Dankeschön.

flacks

von Johnny (Gast)


Lesenswert?

Ja das geht natürlich. Such mal im Netz oder in der Hilfe vom Visual 
Studio (MSDN) nach nach GDI+, dann wird Dir geholfen.

von Chris .. (dechavue)


Lesenswert?

Hi,

Es gibt nicht direkt ein Control (Also was man mit dem Designer auf der 
Form platzieren kann)
Allerdings ist es nicht weiter schwer sachern per Code zu Zeichnen, 
siehe hierzu folgendes Tutorial: 
http://www.mycsharp.de/wbb2/thread.php?threadid=21782

greets

von Markus (Gast)


Lesenswert?

Hi flacks,

schaue Dir mal folgende Klasse an: System.Windows.Forms.ControlPaint

Vielleicht findest Du da, was Du suchst. Ansonsten hat die Klasse
System.Drawing.Graphics diverse Methoden zum Zeichnen und Füllen von 
Linien, Rechtecken, ...

Gruß
Markus

von Daniel V. (volte)


Lesenswert?

Hallo,

genau die System.Drawing Klasse
Wie schon erwähnt bietet MSDN sehr gute (deutsche!!) Hilfestellung.


.DrawRectangle wäre so eine Methode....

http://msdn.microsoft.com/de-de/library/system.drawing.graphics_members(VS.80).aspx


mfG :-)

von flacks (Gast)


Lesenswert?

Wie sieht es dabei dann mit dem Thema Drag&Drop aus? Ich möchte dass man 
dieses Rechteck dann in dem Fenster mit der Maus verschieben kann!

Wie könnte man das machen?

von Karl H. (kbuchegg)


Lesenswert?

Du musst unterscheiden zwischen deinen Daten und der Darstellung deiner 
Daten. Die System.Drawing Funktionen stellen dir Methoden zur Verfügung, 
mit denen du etwas zeichnen kannst. Zeichnen bedeutet: irgendwelche 
Pixel werden auf irgendwelche Werte gesetzt.
Aber: Nachdem die Dinge gezeichnet sind, ist damit das Thema für die 
Library vorbei. Das Rechteck existiert für die Bibliothek nicht mehr als 
Rechteck, es ist als solches nicht mehr angreifbar.

Es ist daher dein Job, dir eine Datenstruktur aufzubauen, in der dein 
Programm weiß, welches Rechteck es gibt und wo es angezeigt wird. Es ist 
auch letzten endes dar Job deines Programmes zu entscheiden, was mit 
einem Mausklick gemacht werden soll. Die Bibliothek kann ja nicht 
wissen, was sie tun soll, wenn mehrere Rechteck überlappend gezeichnet 
werden und der Benutzer in den überlappenden Bereich klickt. Welches 
Rechteck gilt denn? Das kann je nach Programm, je nach Aufgabenstellung, 
je nach Situation ein völlig anderes sein.

Auch wenn dir C# vieles abnimmt. Programmieren musst du immer noch 
selber.

von flacks (Gast)


Lesenswert?

OK habs ja jetzt auch alles "von Hand" gemacht und funktioniert 
einwandfrei.

Aber ich hab noch eine Frage:
Ich möchte dass die Zeichnung im Fenster mit dem Scrollen verschoben 
wird. Soll ich das auch "von Hand" programmieren oder gibt es da 
irgendwas was das abnimmt?
Wenn ich z.B. eine PaintBox-Komponente (gibt es das in c#?) hätte wäre 
diese PaintBox ja fest auf dem Fenster platziert  sie würde durch das 
Scrollen mitverschoben werden. Aber da ich mit dem Graphics-Objekt ja 
direkt auf das Formular so wie es momentan ist zeichne geht das nicht so 
einfach.

Oder hat da jemand einen Tipp?

von Chris .. (dechavue)


Lesenswert?

Hi,

Hier noch zwei Tutorials:

Wie man per Code gezeichnete Objekte mit der Maus verschiebt: 
http://www.mycsharp.de/wbb2/thread.php?threadid=29081

Und noch was zum Scrollen: 
http://www.mycsharp.de/wbb2/thread.php?postid=145740

greets

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.