Litt om språket
Neden for skal vi se på noen av de sentrale elementene i SVG. For en full oversikt over alle elementer og attributter i ulike versjoner henvises til W3Cs SVG-sider [1] .
<svg>
Når vi skal plassere en SVG-dom på en HTMLside gjør vi det med svg-taggen. Vi angir med noen attributter hvor stor den skal være. Noen eksempler:
<svg width="200px" height="100px"> <svg width="4cm" height="8cm"> <svg width="200px" height="100px" viewBox="0 0 1000 500">
Det er spesielt to begreper som er viktig her:Window angitt med width og height og ViewBox. Dette er en måte å mappe tegningen vår til skjermen. Window beskriver størrelsen på skjermområdet og vewBox sier hvilken del av tegningen vår som skal mappes dit. Det siste eksempelet over betyr det at vi skal tegne i et område (ViewBox) fra(0,0) til (1000,500) og vi skal framstille det i Window(0,0) til (200,100). Vi skal mappe rektangelet angitt i viewBox til et rektangel med bredde 200px og høyde 100px. Selve tegningen kan være større enn det vi velger å ta ut i viewBox. Målestokken i viewBox er gitt av de dimensjonenen vi tenker i når vi formulerer tegningen.
De som har programmert grafikk i andre sammenhenger kjenner kanskje begrepene Window og Viewport. Hensikten her er den samme men begrepene er byttet om (!)
<line>
Det enkleste vi kan tegne er vel en linje
Der vi altså angir endepunktene og fargen og tykkelsen på streken.
<rect>
Et av de grunnleggende tegnekommandoene er rect.
Merk at vi har stylet selve svg-elementet( for å vise rammene). I rect-elementet setter vi posisjonen (x,y) oppe til venstre og vi angir bredde og høyde. Vi ber dessuten om å få det fylt med rødt.
Vi kan også gjøre det slik:
Der vi har brukt stroke og vi har brukt rgb().
<circle>
Å tegne sirkler er rimelig rett fram:
og med litt endring, ellipser
<polygon>
Punktene angis med komma mellom x og y og en blank mellom hvert punkt. Det er noen muligheter for å kontrollere fill ved hjelp av fill-rule slik at arealområder som omsluttes flere ganger alltid fylles eller fylles annenhver gang.
polyline er bygd over samme lest som polygon, men lukkes ikke.
Det er lurt å ikke fylle dersom vi skal ha en ren linje.
<text>
Her har vi droppet stroke.
<path>
Path er en fleksible og ganske komplisert måte å lage kurver på. Vi kan lage sammensatte konstruksjoner med polygoner og bezierkurver og vi kan operere med pen up og pen down. Vi kan lukke kurver eller beholde dem åpne. Det er vel ganske uvanlig at vi håndskriver path-elementer. De er imidlertid brukt som output fra tegneprogrammer som genererer SVG, som Inkscape [2] . Vi kommer tilbake til eksempler på path i noen av eksemplene i dette materialet. Her er et enkelt eksempel på en "håndskrevet" path:
Den regulære sekskanten genereres med følgende kode:
Vi har en path som flytter oss (M) til en absolutt posisjon for så å tegne streker (L). Til slutt lukkes kurven med z. Dersom vi skulle holdt oss til relativer verdier ville vi brukt m og l.
<g>
g-elementet er en måte å samle tegningselementer. F.eks slik
Her har vi altså plassert attributtene fill og stroke i g-elementene. Elementene inne i g arver disse. Vi skal se mer på g-elementet når vi ser på SVG-DOM, transformasjoner og animasjoner.
XML
Vi lager en egen XML-side som er et komplett SVG-dokument:
Du kan åpne denne siden her