Over de <path>-tag in SVG

In het item Graphics op je website II: <svg>-tag wordt uitgelegd hoe je eenvoudige plaatjes kunt programmeren met SVG. Als basis-elementen worden daar genoemd: Cirkel <circle />, Ellips <ellipse />, Rechthoek (met scherpe en afgeronde hoeken) <rect />, Veelhoek <polygon /> en <polylijn />, Lijn <line /> en <defs /> om instellingen te maken voor andere elementen.

Om een driehoek te tekenen kun je een polygon gebruiken. Maar een polygon heeft een nadeel: Het is opgebouwd uit rechte lijnstukken. Verder is het gesloten figuur, dus zonder begin en zonder eind. Een open figuur kun je opbouwen uit een serie <line />-tags. Maar er is een andere, meer dynamische mogelijkheid: <path />.

De <path />-tag heeft een aantal attributen, waarvan de belangrijkste hier worden genoemd:

Attribuut Betekenis
fill 
Bepaalt of de omtrek van een figuur moet worden opgevuld, met de opgegeven kleurnaam of -code. Als je "none" invult blijft het binnenste van de figuur transparant.
Voor een open figuur moet je altijd "none" gebruiken.
stroke 
De kleurnaam of -code van de omtrek van een figuur.
stroke-width 
De breedte (in pixels) van de figuur die je tekent.
d 
Dit is de definitie van de figuur. Daarvoor is er een aantal subcommando's beschikbaar:
  • M = moveto. Parameters: x en y. Verplaats de pen naar de coördinaten x en y. Als je dit weglaat wordt (x, y) = (0, 0) genomen.
    N.B.: De oorsprong van het assenstelsel ligt in de linker bovenhoek van de figuur. De X-as wijst naar links, de Y-as wijst naar beneden.
  • L = lineto. Parameters: x en y. Trek een lijn van het laatste punt naar de coördinaten x en y.
  • H = horizontal lineto. Parameter: x. Trek een horizontale lijn van het laatste punt naar het punt met de gegeven x-coördinaat.
  • V = vertical lineto. Parameter: y. Trek een verticale lijn van het laatste punt naar het punt met de gegeven y-coördinaat.
  • C = cubic Bézier curve. Parameters: x1, y1, x2, y2, x en y. De kromme begint in het laatste punt. De raaklijn wordt bepaald door x1 en y1. De kromme eindigt in x en y; de raaklijn wordt bepaald door x2 en y2.
    Zie ook het item Over Bézier-krommen.
  • S = smooth cubic Bézier curve. Parameters: x2, y2, x' en y. Deze kromme wordt het beste gebruikt na een C-kromme of na een andere S-kromme. De Bézier curve begint in het eindpunt van de vorige Bézier curve. De raaklijnen zijn daar aan elkaar gelijk. De kromme eindigt in x en y; de raaklijn wordt bepaald door x2 en y2.
    Als een S-kromme niet volgt op een C-kromme of een andere S-kromme, wordt de positie van de muis gebruikt om de raaklijn in het eerste punt te bepalen. Dat werkt alleen in een interactieve toepassing. In een geprogrammeerde toepassing moet een S-kromme dus alijd worden voorafgegaan door een C-kromme of een andere S-kromme.
  • Q = quadratic Bézier curve. Parameters: x1, y1, x en y. Dit is een beperkte kwadratische Bézier curve. De kromme begint in het laatste punt en eindigt in x en y; de raaklijn in begin- én eindpunt wordt bepaald door x1 en y1; dit het snijpunt van de raaklijnen het in begin- en eindpunt van de kromme.
    Zie ook het item Over Bézier-krommen.
  • T = smooth quadratic Bézier curve. Parameters: x en y. De kromme begint in het laatste punt en eindigt in x en y. De raaklijn in het beginpunt is dezelfde als die in het laatste punt van de vorige kromme. De raaklijn in het laatste punt is evenwijdig aan de raaklijn in het eerste punt van de vorige kromme. Deze kromme kan alleen worden gebruikt als er een Q-kromme of andere T-kromme aan vooraf gaat. Anders wordt er een rechte lijn getekend.
  • A = elliptical Arc. Parameters: rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x en y. Omdat het hier gaat om een boog met de vorm van een ellips, zijn er veel parameters nodig. De betekenis van de parameters is als volgt:
    º rx en ry zijn de halve lange as en halve korte as van de ellips. Als rx en ry aan elkaar gelijk zijn krijg je een cirkelboog.
    º x-axis-rotation beschrijft de hoek (in graden) waar de x-as over wordt gedraaid (positief is met de klok mee).
    º large-arc-flag geeft aan of de boog groter (flag=1) of kleiner (flag=0) is dan 180°. Zie de illustratie hiernaast.
    º sweep-flag geeft aan of het grootste (flag=1) of het kleinste (flag=0) deel wordt getekend. Zie de illustratie hiernaast.
    º x en y markeren het eindpunt van de boog.
  • Z = closepath. Geen parameters. Dit commando sluit het <path> door een rechte lijn te trekken naar het beginpunt van het <path>.
Alle commando's kunnen zowel als hoofdletter als als kleine letter worden opgegegven. Een hoofdletter geeft aan dat het om absolute coördinaten gaat. Een kleine letter geeft aan dat het om relatieve coördinaten gaat.
De letters en de getallen worden gescheiden door een spatie of een komma.
 
Bron: Tutorial op Mozilla.org

SVG heeft een eigen DOM, met JavaScript-functions warmee je dingen kunt aanpassen. Bij <path /> kun je de lengte van de figuur gebruiken. Als je een SVG-element een id meegeeft, kun je dat element benaderen met getElementById().

 
terug

html-680; Laatste wijziging: 21 september 2022