SVG: Unterschied zwischen den Versionen
Sn (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Sn (Diskussion | Beiträge) |
||
Zeile 31: | Zeile 31: | ||
=== Beispiel === | === Beispiel === | ||
[[Datei:Tasse mit Text.svg|mini | [[Datei:Tasse mit Text.svg|mini|Eine Kaffeetasse mit dem Text COFFEE LOVER.]] | ||
Der folgende SVG-Code erzeugt das Bild auf der rechten Seite:<syntaxhighlight lang="xml" line="1"> | Der folgende SVG-Code erzeugt das Bild auf der rechten Seite:<syntaxhighlight lang="xml" line="1"> |
Version vom 8. Februar 2023, 15:32 Uhr
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 eingegeben werden.
- Gerade Linien fügt man mit der Anweisung
<line x1="
ay1="
b" x2="
c" y2="
d" stroke="
Linienfarbe"/>
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" fill="
Füllfarbe" stroke="
Linienfarbe"/>
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" fill="
Füllfarbe" stroke="
Linienfarbe"/>
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" fill="
Füllfarbe" stroke="
Linienfarbe"/>
ein. cx und cy markieren dabei den Mittelpunkt der Ellipse. - Polygone, also beliebige Vielecke, fügt man mit der Anweisung
<polygon points="
a,
b,
d,
f,
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" fill="
Füllfarbe" stroke="
Linienfarbe" font-family="
Schriftart">
Hierhin kommt der Text</text>
. Am Punkt (x|y) beginnt dann eine gedachte waagerechte Linie, auf der der Text steht.
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>