Package imp
Class Picture
- java.lang.Object
-
- imp.Picture
-
public class Picture extends java.lang.Object
Bildklasse fuer die Simulation von Processing-Befehlen Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet werden kann. Zusaetzlich kann ein Bildanzeiger ueber jede Aenderung des Bildes informiert werden, um "Zurueck"-Befehle zu ermoeglichen. Der Bildanzeiger ist entweder eine normale Java ScrollPane oder ein Actor aus Greenfoot. Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) entnommen und mit Deepl.com ins Deutsche uebersetzt.- Version:
- 1.0 from 23.01.2019
- Author:
- Thomas Schaller (ZPG Informatik Klasse 9)
-
-
Constructor Summary
Constructors Constructor Description Picture()
Erzeugt ein Bild mit Standardgroesse 500x400Picture(int width, int height)
Erzeugt ein Bild der angegeben GroessePicture(int width, int height, java.lang.String background)
Erzeugt ein Bild der angegebenen Groesse mit festgelegtem HintergrundPicture(java.lang.String filename)
Erzeugt ein Bild aus einer Datei
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
background(int c)
Die Funktion background() setzt die Farbe, die fuer den Hintergrund des Bildes verwendet wird.void
background(int r, int g, int b)
Die Funktion background() setzt die Farbe, die fuer den Hintergrund des Bildes verwendet wird.void
clear()
Loescht den Inhalt des Bildes.void
delay(int millis)
Hilfsfunktion zum Verzoegern der Ausgabevoid
ellipse(int a, int b, int c, int d)
Zeichnet eine Ellipse/Kreis auf das Bild.void
ellipseMode(int mode)
Aendert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen.void
fill(int fillcolor)
Legt die Farbe fest, mit der Formen gefuellt werden.void
fill(int r, int g, int b)
Legt die Farbe fest, mit der Formen gefuellt werden.void
fill(java.lang.String fillcolor)
Legt die Farbe fest, mit der Formen gefuellt werden.void
forceRepaint()
Ein repaint() (das Neuzeichnen) kann manuell erzwungen werden.int
getHeight()
Liefert die Hoehe des Bildes zurueck.java.awt.image.BufferedImage
getImage()
Direktes Abfragen des Bildes (fuer interne Zwecke)imp.PictureViewer
getObserver()
java.awt.Color[][]
getPixelArray()
Liefert das Bild als zweidimensionales Pixel-Array.int
getWidth()
Liefert die Breite des Bildes zurueck.void
line(int x1, int y1, int x2, int y2)
Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm.void
load(java.lang.String filename)
Laedt ein Bild aus dem Dateisystem.void
noFill()
Legt fest, dass die Formen nicht gefuellt werden sollen.void
noStroke()
Legt fest, dass keine Linien oder Raender um Formen gezeichnet werden soll.void
point(int x, int y)
Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels.void
polygon(int[] x, int[] y)
Zeichnet ein Polygon auf das Bild.void
quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
Zeichnet ein Viereck auf das Bild.void
rect(int a, int b, int c, int d)
Zeichnet ein Rechteck auf das Bild.void
rectMode(int mode)
Aendert den Koordinaten-Modus beim Zeichnen von Rechtecken.void
save(java.lang.String filename)
Speichert ein Bild.void
setAutoRefresh(boolean autoRefresh)
Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in der Oberflaeche aktualisiert wird.void
setImage(java.awt.image.BufferedImage b)
Direktes Setzen des Bildes (fuer interne Zwecke)void
setObserver(imp.PictureViewer observer)
Legt fest, wer das Bild anzeigt.void
setPixelArray(java.awt.Color[][] pixel)
Setzt das Bild neu auf Basis des Pixel-Arrays.void
setTitle(java.lang.String titel)
void
showInFrame()
void
size(int width, int height)
Definiert die Dimension der Breite und Hoehe des Anzeigefensters in Pixeleinheiten.void
stroke(int pencolor)
Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden.void
stroke(int r, int g, int b)
Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden.void
stroke(java.lang.String pencolor)
Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden.void
strokeWeight(double width)
Legt die Breite des Strichs fuer Linien, Punkte und den Rand um Formen fest.void
text(java.lang.String s, int x, int y)
Gibt einen Text an den gegebenen Koordinaten aus Zur Ausgabe des Textes wird der ausgewaehlte Font verwendet.void
textFont(java.awt.Font font)
Legt die Schriftart fuer Textausgaben fest.void
triangle(int x1, int y1, int x2, int y2, int x3, int y3)
Zeichnet ein Dreieck auf das Bild.
-
-
-
Field Detail
-
RADIUS
public static final int RADIUS
- See Also:
- Constant Field Values
-
CENTER
public static final int CENTER
- See Also:
- Constant Field Values
-
CORNER
public static final int CORNER
- See Also:
- Constant Field Values
-
CORNERS
public static final int CORNERS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Picture
public Picture()
Erzeugt ein Bild mit Standardgroesse 500x400
-
Picture
public Picture(int width, int height)
Erzeugt ein Bild der angegeben Groesse- Parameters:
width
- Breite des Bildesheight
- Hoehe des Bildes
-
Picture
public Picture(java.lang.String filename)
Erzeugt ein Bild aus einer Datei- Parameters:
filename
- Dateiname des Bildes
-
Picture
public Picture(int width, int height, java.lang.String background)
Erzeugt ein Bild der angegebenen Groesse mit festgelegtem Hintergrund- Parameters:
width
- Breite des Bildesheight
- Hoehe des Bildesbackground
- Farbe des Hintergrunds
-
-
Method Detail
-
showInFrame
public void showInFrame()
-
setObserver
public void setObserver(imp.PictureViewer observer)
Legt fest, wer das Bild anzeigt. Diese ermoeglicht die Benachrichtung des Observers, wenn sich das Bild aendert.- Parameters:
observer
- Anzeiger des Bildes
-
getObserver
public imp.PictureViewer getObserver()
-
setImage
public void setImage(java.awt.image.BufferedImage b)
Direktes Setzen des Bildes (fuer interne Zwecke)- Parameters:
b
- Bild, das gespeichert werden soll.
-
getImage
public java.awt.image.BufferedImage getImage()
Direktes Abfragen des Bildes (fuer interne Zwecke)- Returns:
- Bild, das gerade gespeichert ist.
-
size
public void size(int width, int height)
Definiert die Dimension der Breite und Hoehe des Anzeigefensters in Pixeleinheiten. Die eingebauten Variablen Breite und Hoehe werden durch die an diese Funktion uebergebenen Parameter festgelegt. So weist beispielsweise der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Hoehe 480 zu.- Parameters:
width
- Breite des Bildesheight
- Hoehe des Bildes
-
getWidth
public int getWidth()
Liefert die Breite des Bildes zurueck.- Returns:
- Breite des Bildes
-
getHeight
public int getHeight()
Liefert die Hoehe des Bildes zurueck.- Returns:
- Hoehe des Bildes
-
setTitle
public void setTitle(java.lang.String titel)
-
setAutoRefresh
public void setAutoRefresh(boolean autoRefresh)
Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in der Oberflaeche aktualisiert wird. Die Einstellung "false" beschleunigt das Zeichnen aufwaendiger Bilder und verhindert "Flackern". Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgeloest werden.- Parameters:
autorefresh
- true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen
-
forceRepaint
public void forceRepaint()
Ein repaint() (das Neuzeichnen) kann manuell erzwungen werden.
-
clear
public void clear()
Loescht den Inhalt des Bildes. Der Hintergrund wird mit der Hintergrundfarbe neu gefuellt.
-
rectMode
public void rectMode(int mode)
Aendert den Koordinaten-Modus beim Zeichnen von Rechtecken. Aendert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise aendert, wie Parameter, die an rect() uebergeben werden, interpretiert werden. Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, waehrend der dritte und vierte Parameter seine Breite und Hoehe sind. rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke und die dritten und vierten Parameter als die Position der gegenueberliegenden Ecke. rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, waehrend der dritte und vierte Parameter seine Breite und Hoehe sind. rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, verwendet aber den dritten und vierten Parameter, um die Haelfte der Breite und Hoehe der Formen festzulegen.- Parameters:
mode
- Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS)
-
ellipseMode
public void ellipseMode(int mode)
Aendert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. Aendert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise aendert, wie Parameter, die an ellipse() uebergeben werden, interpretiert werden. Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, waehrend der dritte und vierte Parameter seine Breite und Hoehe sind. ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke und die dritten und vierten Parameter als Breite und Hoehe der Form. ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke und die dritten und vierten Parameter als die Position der gegenueberliegenden Ecke. ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, verwendet aber den dritten und vierten Parameter, um die Haelfte der Breite und Hoehe der Formen festzulegen.- Parameters:
mode
- Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS)
-
line
public void line(int x1, int y1, int x2, int y2)
Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. Um eine Linie einzufaerben, verwenden Sie diestroke()
Funktion. Eine Zeile kann nicht gefuellt werden, daher hat die Funktion fill() keinen Einfluss auf die Farbe einer Zeile. Linien werden standardmaessig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der FunktionstrokeWeight()
geaendert werden.- Parameters:
x1
- x-Koordinate des 1. Punktesy1
- y-Koordinate des 1. Punktesx2
- x-Koordinate des 2. Punktesy2
- y-Koordinate des 2. Punktes
-
rect
public void rect(int a, int b, int c, int d)
Zeichnet ein Rechteck auf das Bild. Standardmaessig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Hoehe. Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der FunktionrectMode()
geaendert werden. Durch den Befehlfill()
/noFill()
kann die Fuellfarbe des Rechtecks gewaehlt werden, durchstroke()
/noStroke()
die Rahmenfarbe.- Parameters:
a
- meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geaendert werden).b
- meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geaendert werden).c
- meist die Breite des Rechtecks (kann durch rectMode() geaendert werden).d
- meist die Hoehe des Rechtecks (kann durch rectMode() geaendert werden).
-
ellipse
public void ellipse(int a, int b, int c, int d)
Zeichnet eine Ellipse/Kreis auf das Bild. Standardmaessig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Hoehe. Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der FunktionellipseMode()
geaendert werden. Durch den Befehlfill()
/noFill()
kann die Fuellfarbe des Rechtecks gewaehlt werden, durchstroke()
/noStroke()
die Rahmenfarbe.- Parameters:
a
- meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geaendert werden).b
- meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geaendert werden).c
- meist die Breite des Rechtecks (kann durch ellipseMode() geaendert werden).d
- meist die Hoehe des Rechtecks (kann durch ellipseMode() geaendert werden).
-
triangle
public void triangle(int x1, int y1, int x2, int y2, int x3, int y3)
Zeichnet ein Dreieck auf das Bild. Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. Durch den Befehlfill()
/noFill()
kann die Fuellfarbe des Rechtecks gewaehlt werden, durchstroke()
/noStroke()
die Rahmenfarbe.- Parameters:
x1
- meist die x-Koordinate des 1. Punkts.y1
- meist die y-Koordinate des 1. Punkts.x2
- meist die x-Koordinate des 2. Punkts.y2
- meist die y-Koordinate des 2. Punkts.x3
- meist die x-Koordinate des 3. Punkts.y3
- meist die y-Koordinate des 3. Punkts.
-
quad
public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
Zeichnet ein Viereck auf das Bild. Ein Viereck ist ein vierseitiges Polygon. Es ist aehnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten sind nicht auf neunzig Grad beschraenkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. Durch den Befehlfill()
/noFill()
kann die Fuellfarbe des Rechtecks gewaehlt werden, durchstroke()
/noStroke()
die Rahmenfarbe.- Parameters:
x1
- meist die x-Koordinate des 1. Punkts.y1
- meist die y-Koordinate des 1. Punkts.x2
- meist die x-Koordinate des 2. Punkts.y2
- meist die y-Koordinate des 2. Punkts.x3
- meist die x-Koordinate des 3. Punkts.y3
- meist die y-Koordinate des 3. Punkts.x4
- meist die x-Koordinate des 3. Punkts.y4
- meist die y-Koordinate des 3. Punkts.
-
polygon
public void polygon(int[] x, int[] y)
Zeichnet ein Polygon auf das Bild. Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. Durch den Befehlfill()
/noFill()
kann die Fuellfarbe des Rechtecks gewaehlt werden, durchstroke()
/noStroke()
die Rahmenfarbe.- Parameters:
x
- Liste der x-Koordinaten der Punkte.y
- Liste der y-Koordinaten der Punkte.
-
point
public void point(int x, int y)
Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. Der erste Parameter ist der x-Wert fuer den Punkt, der zweite Wert ist der y-Wert fuer den Punkt.- Parameters:
x
- x-Koordinate des Punktesy
- y-Koordinate des Punktes
-
text
public void text(java.lang.String s, int x, int y)
Gibt einen Text an den gegebenen Koordinaten aus Zur Ausgabe des Textes wird der ausgewaehlte Font verwendet. Dieser muss vorher mittextFont()
festgelegt.- Parameters:
s
- Text, der angezeigt werden sollx
- x-Koordinate des Textanfangsy
- y-Koordinate der Grundlinie des Textes.
-
textFont
public void textFont(java.awt.Font font)
Legt die Schriftart fuer Textausgaben fest. Jeder uebliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden.- Parameters:
font
- ein Font-Objekt
-
stroke
public void stroke(java.lang.String pencolor)
Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden. Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei fuer die roten, gruenen und blauen Komponenten, um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden).- Parameters:
pencolor
- Stiftfarbe in Hexadezimaldarstellung
-
stroke
public void stroke(int pencolor)
Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden. Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben- Parameters:
pencolor
- Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiss, sonst: c wird als 3-Byte RGB-Wert interpretiert)
-
stroke
public void stroke(int r, int g, int b)
Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden. Diese Farbe wird komponentenweise als RGB-Wert angegeben- Parameters:
r
- Rotanteil (0-255) der Stiftfarbeg
- Gruenanteil (0-255) der Stiftfarbeb
- Blauanteil (0-255) der Stiftfarbe
-
noStroke
public void noStroke()
Legt fest, dass keine Linien oder Raender um Formen gezeichnet werden soll.
-
strokeWeight
public void strokeWeight(double width)
Legt die Breite des Strichs fuer Linien, Punkte und den Rand um Formen fest. Alle Breiten werden in Pixeleinheiten angegeben.- Parameters:
width
- Breite in Pixel
-
fill
public void fill(java.lang.String fillcolor)
Legt die Farbe fest, mit der Formen gefuellt werden. Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei fuer die roten, gruenen und blauen Komponenten, um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden).- Parameters:
fillcolor
- Fuellfarbe in Hexadezimaldarstellung
-
fill
public void fill(int fillcolor)
Legt die Farbe fest, mit der Formen gefuellt werden. Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben.- Parameters:
fillcolor
- Fuellfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiss, sonst: c wird als 3-Byte RGB-Wert interpretiert)
-
fill
public void fill(int r, int g, int b)
Legt die Farbe fest, mit der Formen gefuellt werden. Diese Farbe wird komponentenweise als RGB-Wert angegeben.- Parameters:
r
- Rotanteil (0-255) der Fuellfarbeg
- Gruenanteil (0-255) der Fuellfarbeb
- Blauanteil (0-255) der Fuellfarbe
-
noFill
public void noFill()
Legt fest, dass die Formen nicht gefuellt werden sollen.
-
background
public void background(int c)
Die Funktion background() setzt die Farbe, die fuer den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. Es ist nicht moeglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberflaeche zu verwenden.- Parameters:
c
- Farbe fuer den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiss, sonst: c wird als 3-Byte RGB-Wert interpretiert)
-
background
public void background(int r, int g, int b)
Die Funktion background() setzt die Farbe, die fuer den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. Es ist nicht moeglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberflaeche zu verwenden.- Parameters:
r
- Rotanteil (0-255) der Hintergrundfarbeg
- Gruenanteil (0-255) der Hintergrundfarbeb
- Blauanteil (0-255) der Hintergrundfarbe
-
load
public void load(java.lang.String filename)
Laedt ein Bild aus dem Dateisystem. Laedt ein Bild von einem Datentraeger und setzt Stiftfarbe und Fuellfarbe auf Standardwerte zurueck.- Parameters:
filename
- Dateiname des Bildes
-
save
public void save(java.lang.String filename)
Speichert ein Bild. Speichert ein Bild auf einem Datentraeger. Zulaessig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. Standardmaessig wird die Dateiendung .png ergaenzt, wenn keine angegeben ist.- Parameters:
filename
- Dateiname des Bildes
-
getPixelArray
public java.awt.Color[][] getPixelArray()
Liefert das Bild als zweidimensionales Pixel-Array.- Returns:
- zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen.
-
setPixelArray
public void setPixelArray(java.awt.Color[][] pixel)
Setzt das Bild neu auf Basis des Pixel-Arrays. Die Groesse des Bildes wird nicht automatisch an das Array angepasst.- Parameters:
pixel
- zweidimensionales Array von Color-Objekten
-
delay
public void delay(int millis)
Hilfsfunktion zum Verzoegern der Ausgabe- Parameters:
millis
- Wartezeit in Millisekunden
-
-