SVG
SVG (Scalable Vector Graphics) ist ein Bild-Dateiformat, welches statt mit Pixeln mit Linien arbeitet. Es basiert auf der Dateiform XML.
Ein Vorteil des SVG-Formates gegenüber anderen Grafikformaten wie JPG oder PNG, insbesondere beim Arbeiten mit niedriger Datenverbindung, ist die Skalierbarkeit ohne Qualitätsverlust, gegenüber der Skalierbarkeit von pixel-basierten Rastergrafiken, deren Auflösung entsprechend des Pixel-Systems schlechter wird.
SVG-Bilder bestehen aus einer Reihe von Zeichen-Anweisungen, die von geeigneten Programmen, z.B. von den meisten Webbrowsern in Zeichnungen umgesetzt werden können. Diese Zeichenanweisungen orientieren sich an einem gedachten Koordinatensystem, dessen Ursprung in der oberen linken Ecke des Bildes liegt. Das heißt, jeder Punkt des Bildes hat eine x-Koordinate und eine y-Koordinate, die x-Koordinate ist 0 am linken Bildrand und wächst nach rechts, die y-Koordinate ist 0 am oberen Bildrand und wächst nach unten.
Struktur eines SVG-Bildes
Eine SVG-Datei beginnt immer mit einem öffnenden <svg>
und endet mit einem schließenden </svg>
. Im öffnenden <svg>
sollten zusätzlich noch die Attribute width
und height
angegeben werden, die die Breite und Höhe des fertigen Bildes festlegen. Zu beachten ist die Schreibweise: eine Breite von 200 Einheiten wird als width="200"
angegeben, wobei das Gleichheitszeichen und die Anführungszeichen wichtig sind.
<svg width="100" height="100">
<!-- hierhin kommen die Zeichenanweisungen -->
</svg>
Zeichen-Anweisungen
Jede Anweisung gibt für ein grafisches Objekt vor, wie es zu zeichnen ist. Dabei gibt es Anweisungen für Standardformen wie Kreise und Rechtecke und die sehr mächtige Form path
, die quasi jede vorstellbare Gestalt annehmen kann.
Für alle kursiv gesetzten Platzhalter müssen bei der Umsetzung konkrete Werte eingesetzt werden.
- Gerade Linien fügt man mit der Anweisung
<line x1="a" y1="b" x2="c" y2="d"/>
ein. Diese Linie verbindet dann die Punkte (a|b) und (c|d). - Rechtecke fügt man mit der Anweisung
<rect x="x" y="y" width="Breite" height="Höhe"/>
ein. x und y markieren dabei die Koordinaten der oberen linken Ecke des Rechtecks. - Kreise fügt man mit der Anweisung
<circle cx="x" cy="y" r="Radius"/>
ein. cx und cy markieren dabei den Mittelpunkt des Kreises. - Ellipsen fügt man mit der Anweisung
<ellipse cx="x" cy="y" rx="halbe Breite" ry="halbe Höhe"/>
ein. cx und cy markieren dabei den Mittelpunkt der Ellipse. - Polygone, also eckige Formen mit beliebig vielen Ecken, fügt man mit der Anweisung
<polygon points="a,b c,d e,f ... y,z"/>
ein, wobei eine Form entsteht, die die Punkte (a|b), (c|d), (e|f) ... und (y|z) miteinander verbindet. Es müssen mindestens drei und dürfen beliebig viele Punkte angegeben werden - Texte werden mit folgender Anweisung erzeugt:
<text x="x" y="y">Hierhin kommt der Text</text>
. Am Punkt (x|y) beginnt dann eine gedachte waagerechte Linie, auf der der Text steht.
Diese Anweisungen geben nur vor, was gezeichnet werden soll, aber nicht genau, wie. Details der Gestaltung wie Farben und Schriftarten können aber auch vorgegeben werden. Zunächst die Farben:
fill="Farbe"
kann in jede Anweisung hineingeschrieben werden, um für die Form eine Füllfarbe vorzugeben.- Beispiele:
fill="red"
füllt rot,fill="#BADB01"
füllt braun,fill="none"
lässt die Form unausgefüllt und durchsichtig erscheinen
- Beispiele:
stroke="Farbe"
kann in jede Anweisung hineingeschrieben werden, um für die Form eine Linienfarbe vorzugeben.- Beispiele:
stroke="green"
zeichnet eine grüne Umrandung,stroke="#C0FFEE"
zeichnet eine helltürkise Umrandung,stroke="none"
zeichnet gar keine Umrandung
- Beispiele:
Die Farben können entweder mit ihren Namen oder einem RGB-Hexcode angegeben werden.
Für Texte können diverse Eigenschaften festgelegt werden:
font-family="Schriftart"
legt die Schriftart fest.font-size="Schriftgröße"
legt die Schriftgröße fest.font-style="italic"
setzt den Text kursivfont-weight="bold"
setzt den Text fett
Von diesen direkten Änderungen abgesehen können SVG-Elemente auch mit CSS-Regeln gestaltet werden.
Beispiel
Der folgende SVG-Code erzeugt das Bild auf der rechten Seite:
<svg width="100" height="100">
<circle cx="40" cy="60" r="35" fill="red"/>
<rect x="5" y="25" width="70" height="35" fill="red"/>
<ellipse cx="75" cy="50" rx="20" ry="10" stroke="red" fill="none"/>
<polygon points="5,95 25,100 55,100 75,95" fill="red"/>
<text x="13" y="50" fill="white"
font-family="Source Sans Pro" font-weight="900">
COFFEE
</text>
<text x="17" y="75" fill="white"
font-family="Source Sans Pro" font-weight="900">
LOVER
</text>
</svg>
Der Körper der Tasse besteht dabei aus dem roten circle
und dem roten rect
, der Henkel wird von der ellipse
gebildet, das polygon
formt die Untertasse und zuletzt steht der Text in zwei Zeilen.