Jython

2. Formen und Farben

Das Modul GPanel verfügt über viele Grafikfunktionen, mit welchen man geometrische Formen zeichnen kann.
Hier die wichtigsten Befehle:

 
  point(x, y)
line(x1, y1, x2, y2)
rectangle(width, height)
fillRectangle(width, height)
rectangle(x1, y1, x2, y2)
fillRectangle(x1, y1, x2, y2)
triangle(x1, y1, x2, y2, x3, y3)
circle(r)
fillCircle(r)
ellipse(a, b)
arc(r, startwinkel, endwinkel)
fillArc(r, startwinkel, endwinkel)

Ein Punkt
Eine Linie
Ein Rechteck (Breite, Höhe)
Ein ausgefülltes Rechteck
Ein Rechteck (Eckpunkte)
Ein ausgefülltes Rechteck
Ein Dreieck (Eckpunkte)
Ein Kreis mit Radius r
Ein ausgefüllter Kreis
Eine Ellipse mit den Achsen a, b
Ein Kreisbogen
Ein ausgefüllter Kreisbogen

 

Für Figuren, die keine Koordinatenangaben erhalten, muss man zuerst mit pos(x, y) die Position des Mittelpunktes festlegen. Der unsichtbarer Grafikcursor befindet sich standardmässig im Punkt (0, 0). Die oben aufgeführten Funktionen verändern die Lage des Grafikcursors nicht.

Die aktuelle Zeichnungsfarbe wird mit dem Befehl setColor("farbe") gesetzt, GPanel kennt die sogenannten X11-Farben. Es handelt sich um einige dutzend Farbnamen, die man im Internet unter http://cng.seas.rochester.edu/CNG/docs/x11color.html nachschlagen kann (z.B. "red", "yellow", "blue", "green", "magenta", usw.).

Die Farbe kann auch mit dem Befehl setColor(r, g, b) gesetzt werden, wobei r, g, b ganze Zahlen zwischen 0 und 255 sind (RGB-Farbkomponenten). Eine hellgrüne Farbe erhält man z. B. mit setColor(0, 255, 0).


Beispiel 1: Kreise und Rechtecke in verschiedenen Farben.

# Gp2a.py
from gpanel import *

makeGPanel(-10, 10, -10, 10)
circle(10)
setColor("darkblue")
fillRectangle(19, 6)
setColor("yellow")
fillRectangle(14,14)
setColor("red")
fillCircle(4)
setColor("green")
pos(5, 5)
fillCircle(2)
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

makeGPanel(-10, 10, -10, 10): erzeugt ein GPanel mit einem Koordinatensystem x = -10..10 und y = - 10..10. Der Grafikcursor befindet sich zu Beginn in der Mitte der Grafikfensters im Punkt mit den Koordinaten (0, 0) und wird erst beim Zeichnen der letzten Figur an die Position (5, 5) versetzt.

 

Beispiel 2: Formen, die durch die Koordinaten der Eckpunkte bestimmt sind.

# Gp2b.py
from gpanel import *

makeGPanel(0, 10, 0, 10)

setColor("yellow")
fillRectangle(2, 2, 8, 5)
setColor("red")
fillTriangle(2, 5, 8, 5, 5, 8)
setColor("darkblue")
lineWidth(3)
rectangle(3, 3, 4, 4) 
rectangle(6, 3, 7, 4) 
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

lineWidth(3): setzt die Liniendicke auf 3 Pixel
Die korrekte Syntax aller Grafikbefehle kann man jederzeit in der Dokumentation nachschlagen. Einen Link zur Dokumentation findet man auch im TigerJython-Editor unter Hilfe/Aplu-Dokumentation.

 

Beispiel 3: Mit "floodfill"  eine geschlossene Figur füllen
Eine Figur kann nachträglich gefüllt werden. Dazu verwendet man die Funktion fill(x, y, oldcolor, color). x, y sind Koordinaten eines Punktes, der sich in der zu färbenden Figur befindet, oldcolor ist die aktuelle Füllfarbe und color die neue Füllfarbe.

# Gp2c.py
from gpanel import *

makeGPanel(-10, 10, -10, 10)

line(-6, -3, 4, 6)
line(-1, 7, 6, -5)
line(-8, 1, 7, -4)
fill(0, 0, "white", "magenta")
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

fill(0, 0, "white", "magenta": füllt das weiss gefüllte Dreieck, in dem sich der Punkt (0, 0) befindet, mit einer rosaroten Farbe.

 


Aufgaben: Serie 2


1)


Wähle ein geeignetes Koordinatensystem und zeichne eine Verkehrsampel gemäss der nebenstehenden Vorlage.

 


2)

Zeichne ein Schweizerkreuz.
 



3)

Zeichne einen Regenbogen. Verwende dazu den Befehl fillArc(r, startwinkel, endwinkel).