SVG: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
Zeile 27: Zeile 27:
*'''Polygone''', also eckige Formen mit beliebig vielen Ecken, fügt man mit der Anweisung <code><polygon points="</code>''a''<code>,</code>''b''<code> </code>''c''<code>,</code>''d''<code> </code>''e''<code>,</code>''f''<code> </code>...<code> </code>''y''<code>,</code>''z''<code>"/></code> 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
*'''Polygone''', also eckige Formen mit beliebig vielen Ecken, fügt man mit der Anweisung <code><polygon points="</code>''a''<code>,</code>''b''<code> </code>''c''<code>,</code>''d''<code> </code>''e''<code>,</code>''f''<code> </code>...<code> </code>''y''<code>,</code>''z''<code>"/></code> 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: <code><text x="</code>''x''<code>" y="</code>''y''<code>"></code>''Hierhin kommt der Text''<code></text></code>. Am Punkt (''x''|''y'') beginnt dann eine gedachte waagerechte Linie, auf der der Text steht.
*'''Texte''' werden mit folgender Anweisung erzeugt: <code><text x="</code>''x''<code>" y="</code>''y''<code>"></code>''Hierhin kommt der Text''<code></text></code>. 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:
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:


* <code>fill="</code>''Farbe''<code>"</code> kann in jede Anweisung hineingeschrieben werden, um für die Form eine Füllfarbe vorzugeben.
* <code>fill="</code>''Farbe''<code>"</code> kann in jede Anweisung hineingeschrieben werden, um für die Form eine Füllfarbe vorzugeben.
Zeile 33: Zeile 33:
* <code>stroke="</code>''Farbe''<code>"</code> kann in jede Anweisung hineingeschrieben werden, um für die Form eine Linienfarbe vorzugeben.
* <code>stroke="</code>''Farbe''<code>"</code> kann in jede Anweisung hineingeschrieben werden, um für die Form eine Linienfarbe vorzugeben.
** Beispiele: <code>stroke="green"</code> zeichnet eine grüne Umrandung, <code>stroke="#C0FFEE"</code> zeichnet eine helltürkise Umrandung, <code>stroke="none"</code> zeichnet gar keine Umrandung
** Beispiele: <code>stroke="green"</code> zeichnet eine grüne Umrandung, <code>stroke="#C0FFEE"</code> zeichnet eine helltürkise Umrandung, <code>stroke="none"</code> zeichnet gar keine Umrandung
* Für Texte können diverse [[Attribut (Informatik)|Eigenschaften]] festgelegt werden.
Für Texte können diverse [[Attribut (Informatik)|Eigenschaften]] festgelegt werden:
 
* <code>font-family="</code>''Schriftart''<code>"</code> legt die Schriftart fest.
* <code>font-size="</code>''Schriftgröße''<code>"</code> legt die Schriftgröße fest.
* <code>font-style="italic"</code> setzt den Text ''kursiv''
* <code>font-weight="bold"</code> setzt den Text '''fett'''
 
Von diesen direkten Änderungen abgesehen können SVG-Elemente auch mit [[CSS]]-Regeln gestaltet werden.


=== Beispiel ===
=== Beispiel ===
Zeile 60: Zeile 67:
*[https://www.w3schools.com/graphics/svg_intro.asp SVG-Tutorial von W3Schools.com 🇬🇧]
*[https://www.w3schools.com/graphics/svg_intro.asp SVG-Tutorial von W3Schools.com 🇬🇧]
*[https://developer.mozilla.org/en-US/docs/Web/SVG?retiredLocale=de SVG-Dokumentation von Mozilla 🇬🇧]
*[https://developer.mozilla.org/en-US/docs/Web/SVG?retiredLocale=de SVG-Dokumentation von Mozilla 🇬🇧]
*[https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute Übersicht über alle SVG-Attribute von Mozilla] [https://developer.mozilla.org/en-US/docs/Web/SVG?retiredLocale=de 🇬🇧]
*[https://wiki.selfhtml.org/wiki/SVG SVG-Tutorial von SelfHTML 🇩🇪]
*[https://wiki.selfhtml.org/wiki/SVG SVG-Tutorial von SelfHTML 🇩🇪]
[[Kategorie:Bildcodierung]]
[[Kategorie:Bildcodierung]]

Version vom 8. Februar 2023, 17:08 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

Der Ursprung des SVG-Koordinatensystems liegt in der oberen linken Ecke des 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.

  • 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
  • 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

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 kursiv
  • font-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:

Das Bild, das von dem links stehenden Code erzeugt wird.
<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.

Weblinks