Swing -Flächenkoordinaten
Beim Zeichnen in eine Graphikfläche wird der Ort und die Ausdehnungen des zu Zeichnenden durch Zahlenwerte bestimmt. Das System (die Regel) zur Zuordnung von Orten zu Zahlenwerten nennt man ein Koordinatensystem.
Swing legt ein Modell eines graphischen Ausgabegerätes zugrunde, dessen Zeichenflächen aus Pixeln bestehen. Hierbei handelt es sich um kleine Rechtecke, aus denen die gesamte Zeichenfläche besteht. Jedes Pixel hat ein bestimmte einheitliche Farbe, es ist also nicht möglich, daß Teile eines Pixel unterschiedliche Farben haben.
Eine Zeichenflaeche mit neun Pixeln
.-----------------------------------.
| |:::::::::::| |
| |:::::::::::| |
| |:::::::::::| |
|-----------------------------------|
| |###########|:::::::::::|
| |###########|:::::::::::|
| |###########|:::::::::::|
|-----------------------------------|
| |###########|:::::::::::|
| |###########|:::::::::::|
| |###########|:::::::::::|
'-----------------------------------'
In einer rechteckigen Graphikfläche wird eine Variante eines kartesischen (rechtwinkligen) Koordinatensystems verwendet. Jeder Ort wird dabei durch zwei Zahlen gekennzeichnet.
Die erste Zahl ist die x‑Koordinate (waagerechte Ortskennzahl), sie gibt den Abstand des Ortes vom linken Rand der rechteckigen Graphikfläche an und wird nach rechts hin größer.
Die x-Koordinate
linker
Rand
|
| positive
| x-Koordinate Ort
| 27
|<------------------------>o
|
|
|
|
Die zweite Zahl ist die y‑Koordinate (senkrechte Ortskennzahl), sie gibt den Abstand des Ortes vom oberen Rand der rechteckigen Graphikfläche an und wird nach unten hin größer.
Die y-Koordinate
oberer ----------------------------------------------
Rand ^
|
| positive
| y-Koordinate
| 7
v
o Ort
Zu einem bestimmten Punkt der Graphikfläche gehört also immer ein bestimmtes Zahlenpaar.
Koordinaten eines Punktes
.--------------------------------------------- oberer Rand
| ^
| |
| | positive
| | y-Koordinate
| | 7
| v
|<------------------------>o
| positive x-Koordinate 27 Ort =
| ( 27, 7 )
|
|
|
linker
Rand
Diese Koordinaten eines Punktes werden auch als 2-Tupel (Paar) geschrieben, indem in runden Klammern (seltener: spitzen Klammern) zuerst die x-Koordinate und dann die y-Koordinate angegeben wird. Die Koordinaten werden häufig durch Kommas getrennt; doch wenn, wie im Deutschen, Dezimalbrüche selber Kommas enthalten, ist es eindeutiger, ein Semikolon als Trennzeichen zu verwenden. So bedeutet das Paar "( 4,3; 5 )" also die x‑Koordinate 4,3 und die y‑Koordinate 5. In Programmiersprachen verwendet man aber meistens die Schreibweise mit einem Dezimalpunkt, so daß in Zusammenhang mit Programmiersprachen doch wieder auch das Komma verwendet werden kann, etwa wie bei dem Paar "( 4.3, 5 )".
Die Koordinaten eines Pixels sind die Koordinaten seines linken oberen Eckpunktes
. In der Abbildung "Eine Zeichenflaeche mit neun Pixeln (1) " ist dieser Punkt durch einen kleinen Kreis "o" dargestellt.
Eine Zeichenflaeche mit zwoelf Pixeln (1)
------------------------------------>
Spalte 0 Spalte 1 Spalte 2
| o-----------o-----------o-----------. ----- oberer Rand
| Zeile 0 | Pixel | Pixel | Pixel | ^
| | ( 0; 0 ) | ( 1; 0 ) | ( 2; 0 ) | |
| | | | | |
| o-----------o-----------o-----------| |
| Zeile 1 | Pixel | Pixel | Pixel | |
| | ( 0; 1 ) | ( 1; 1 ) | ( 2; 1 ) | |
| | | | | | Hoehe
| o-----------o-----------o-----------| | 4
| Zeile 2 | Pixel | Pixel | Pixel | |
| | ( 0; 2 ) | ( 1; 2 ) | ( 2; 2 ) | |
| | | | | |
| o-----------o-----------o-----------| |
| Zeile 3 | Pixel | Pixel | Pixel | |
| | ( 0; 3 ) | ( 1; 3 ) | ( 2; 3 ) | |
| | | | | v
V '-----------------------------------' ---
|<--------------------------------->|
Breite 3
linker Rand
Das Koordinatenpaar des linken oberen Pixels ist also stets das Paar "(0; 0)", egal welches seine Größe ist. Die Breite einer Zeichenfläche ist durch die Anzahl der waagerecht nebeneinanderliegenden Pixel (Spalten) gegeben, die Tiefe durch die Anzahl der senkrecht untereinanderliegenden Pixel (Zeilen). Obwohl man die y‑Koordinate nach unten zählt, nennt man aus alter Gewohnheit von klassischen Koordinatensystemen, bei denen die y-Koordinate nach oben hin zunimmt, die Tiefe einer Fläche doch üblicherweise ihre Höhe. Eine Zeichenfläche hat also eine Breite und eine Höhe (Engl.: width bzw. height ).
Das Koordinatensystem einer digitalen Zeichenfläche wird oft so gewählt, daß die Koordinaten jedes Pixels ganzzahlig sind und zu allen Paaren ganzer Zahlen aus einem bestimmten Bereich ein Pixel gehört.
Die größtmögliche x-Koordinate eines Pixels auf einer Zeichenfläche der Breite "width " ist nicht etwa "width ", sondern "width - 1".
So ist die größte x-Koordinate einer Zeichenfläche mit der Breite Drei die Koordinate Zwei: Da die kleinste x-Koordinate nämlich Null ist, gibt es dann insgesamt drei mögliche x-Koordinatenwerte, nämlich Null, Eins und Zwei. Entsprechendes gilt auch für die y-Koordinate.
Die Fläche "Flaeche1" der Abbildung hat die Breite 10 und die Höhe 6. Die x‑Koordinate der in ihr enthaltenen Pixel liegt im Bereich von 0 bis 9, dies sind 10 verschiedene Werte (Spalten).
Flaeche1 mit width = 10 und height = 6 [Komponentenflaeche]
0123456789 (x)
0 o········r 60 Pixel
1 ·········· 6 Zeilen
2 ·········· 10 Spalten
3 ··········
4 ··········
5 u········e <- height - 1
(y) ^
|
width - 1Koordinaten einiger Pixel [Tabelle]
"Name", "x", "y".
"o", "0", "0".
"r", "9", "0".
"u", "0", "5".
"e", "9", "5".
Falls Breite und Tiefe größer als Eins ist, dann hat die Komponentenfläche ganz links oben ein Pixel "o". Der ganz links oben befindliche Punkt dieses Pixels "o" hat die Breiten-Koordinate 0 und die Tiefen-Koordinate 0. Dementsprechend hat das Pixel "o" insgesamt die Koordinaten "( 0; 0 )". Die Koordinaten des ganz rechts unten befindlichen Pixels "x" einer Zeichenfläche der Breite "width " und der Höhe "height " kann man allgemein auch als "( width - 1; height - 1 )" schreiben. Die x-Koordinaten der Pixel einer Zeichenfläche der Breite "width " reichen also von 0 (einschließlich) bis "width - 1" (einschließlich), die y-Koordinaten der Pixel einer Zeichenfläche der Höhe "height " reichen von 0 (einschließlich) bis "height - 1" (einschließlich).