Laden...

Logik beim Zeichnen: Welche Datenstruktur(en) verwendet man?

Erstellt von vnvjan vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.752 Views
V
vnvjan Themenstarter:in
74 Beiträge seit 2006
vor 10 Jahren
Logik beim Zeichnen: Welche Datenstruktur(en) verwendet man?

Gleich vorweg...ich beschäfftige mich nicht jeden Tag mit C#, sondern nur wenn ich mal bischen Zeit nebenher habe. Jetzt hab ich grad wieder Zeit ne Sache weiterzuführen die ich vor langer Zeit begonnen hatte.

Im Anhang ist ein Screenshot eines Projektes mit dem ich mich im Moment beschäfftige. Es soll eine einfache CAD Anwendung nur für meinen Hausgebrauch werden. Nun, ich zeichne an bestimmten Mauskoordinaten im Raster Eckpunkte von denen aus ich mit der Maus Linien ziehe und an einer anderen Koordinate festsetzen kann, halt für einfache geometrische Formen. Das Ganze wird nur mit DrawLines bzw. DrawRectangle im Paint-Event gezeichnet, was recht flott ohne Flickern klappt.

Und hier tauchen meine Fragen auf. Ist es sinnvoller aus jedem Punkt bzw. Linie eine Klasse zu erstellen oder reicht eine Klasse für die gesamte geom. Form aus? Brauch ich überhaupt eine Klassendefinition, wenn ich immer nur eine Form zeichnen möchte?

Zusätzlich möchte ich die Eckpunkte erkennen und verschieben bzw. eine Linie mit einem oder mehreren Eckpunkten unterbrechen wollen, d.h. neue Eckpunkten zwischen vorhandenen Eckpunkten setzen. Die Koordinaten speicher ich mir separat in einem Array ab. Zur Darstellung hab ich sie in eine Listbox gepackt.

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo vnvjan,

wenn du etwas zeichnen willst, musst du dir den Zustand merken. Dafür gibt es die unterschiedlichsten Möglichkeiten. Eine Klasse, mehrerer Klassen, gar keine (eigenen) Klassen. Was du tust, bleibt dir überlassen. Wähle, was immer praktischer für dich ist. Siehe auch [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox).

Was das Verschieben von Punkten angeht, siehe [Tutorial] Gezeichnete Objekte mit der Maus verschieben.

herbivore

V
vnvjan Themenstarter:in
74 Beiträge seit 2006
vor 10 Jahren

Danke erstmal für die Informationen.

Wenn ich das richtig verstehe ist der GraphicsPath nix anderes als eine Klasse, die ich nur mit Koordinaten füttern muß und diese sich dann um die Darstellung kümmert, je nachdem was ich darstellen möchten...mal salopp gesprochen. Wenn ja kann ich ja meine Implementierung der ganzen Draw-Geschichten dessen überdenken, da mir GraphicPaths hierbei mehr Funktionen im Paket anbietet?

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo vnvjan,

ein GraphicsPath zeichnet sich nicht von alleine, nur weil er existiert. Um die Darstellung musst du dich (im OnPaint/Paint) schon kümmern. Dazu kannst du die Graphics.DrawPath-Methode benutzen.

Ansonsten bist du, wie gesagt, in deiner Entscheidung frei. Wenn dir ein GraphicsPath reicht, ist es durchaus legitim, diesen (direkt) zu verwenden.

herbivore