Quiz/CGBV-SL2

Die zweite Studienleistung für den Kurs "Computergraphik und Bildverarbeitung" (SS23).

Vektorgrafik

Aufgabenstellung

Entwickeln Sie eine Zeichenanwendung mini-draw.py, mit der man Vektorgrafiken erstellen und bearbeiten kann. Die Funktionsweise soll gängigen Vektorgrafikprogrammen wie z.B. Inkscape ähneln. Die Anwendung soll einen tkinter.Canvas verwenden, in dem über die create_rect()-Methode einzelne Pixel gesetzt werden. Alle weiteren Zeichenoperationen sollen auf dieser Basis implementiert werden.

Verpflichtende Features

  • Zeichnen von geraden Linien mit der linken Maustaste
  • Zeichnen von quadratischen Bezier-Kurven, indem für jede gezeichnete Linie in der Mitte ein Kontrollpunkt gezeichnet wird, der gezogen werden kann
  • Zeichnen von gefüllten Polygonen (selbst implementiert)
  • Alle End-/Eck-/Kontrollpunkte sollen als kleine Rechtecke (z.B. 5×5 px) dargestellt werden und mit der Maus verschoben werden können
  • Mittels der Taste x kann man die End-/Eck-/Kontrollpunkte ein-/ausblenden
  • Mittels der Taste c kann man den Canvas leeren
  • Mit der mittleren Maustaste kann der gesamte Canvas verschoben werden

Wahlpflichtfeatures

Wählen Sie 3 aus:

  • Zoomen mit dem Scrollrad (Liniendicke bleibt konstant 1 px)
  • Zeichnen mit Farben (Auswahldialog von tkinter verwenden)
  • Füllen mit Mustern / Schraffuren
  • Speichern und Laden der Grafik
  • Zeichnen von Rechtecken oder Kreisen mit der rechten Maustaste
  • effizientes Neuzeichnen des Bildschirms nur dort, wo sich etwas verändert hat
  • Antialiasing der Linien
  • (eigenes Feature vorschlagen)

Weitere Anforderungen

  • bei Verwendung fremder Code-Beispiele: Quellenangabe im Text
  • keine weiteren Bibliotheken verwenden außer tkinter, numpy
  • Abgabe von Quellcode und kurzer Video-Demo (ca. 1 Minute)

Lernpfad


Warning: touch(): Utime failed: Permission denied in /var/www/html/extensions/Widgets/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php on line 178

The learning path to Q451