Erzeugung Kompassrose mit SVG
Eine SVG-Grafik hat Vorteile gegenüber einer Grafik mit Canvas.
Scale mit Mouesewheel Klick to change
- Das Raster kann wesentlich feiner gewählt werden
- Die Grafik kann scaliert werden und bleibt trotzdem sauber.
(gehen Sie mit der Maus in die Rose und scrollen sie mit dem Mausrad.)
Dabei wird die Ausdehnung mit Hilfe von width und height festgelegt.
Die kann absolut sein oder auch eine Prozentangabe, dann bezieht sich diese auf das Parentelement.
Hier wird ein quadratischer Bereich von 300 Pixel festgelegt.
Als nächster Parameter wird die Viewbox festgelegt.
Das ist keine Pixelangabe sondern ein Raster, das die Koordinaten innerhalb der Viewbox beschreibt.
viewBox="minx miny width height"
D.h. die linke, obere Ecke hat die Koordinate 0,0
Die rechte untere Ecke die Koordinate 300,300
Um einen Kreis zu zeichen, haben wir jetzt 2 Möglichkeiten.
- Wir geben den Mittelpunkt unseres Kreise an :
<circle cx="150" cy="150" r="150" style="fill: #FFFFFF; stroke: #202020; stroke-width: 1px;" />
Das ist keine gute Lösung, wenn wir mehrere Elemente haben und später
evtl. die Koordinaten ändern müssen.
- wir verschieben unser Koordinatensystem mit Hilfe eines
Gruppenelementes und transform
<g transform="translate(150,150)" >
Für alle Elemente die innerhalb dieser Gruppe definiert werden, liegt der
Ursprung jetzt auf(150,150)
Deshalb wird unser Kreis jetzt wie folgt definiert:
<circle cx="0" cy="0" r="150" style="fill: #FFFFFF; stroke: #202020; stroke-width: 1px;" />
- Da der Rest unserer Elemente alle mit dem Kreis zu tun haben, benutzen
wir
transform="translate(x,y)"
Hierdurch können wir alle Unterelemente verschieben, indem wir den übergeordneten transform ändern.
Andernfall müsste wir in jedem einzelnen Element die Koordinaten ändern.