Zoeken…


Opmerkingen

Grafische elementen kunnen worden gewijzigd door een transformattribuut toe te voegen.

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="0" y="0" width="30" height="30" transform="translate(10, 10)" />
</svg>

In plaats van dat de oorsprong linksboven op coördinaten (0, 0) wordt weergegeven, wordt deze vanaf punt (10, 10) naar beneden en rechts weergegeven.

Hele groepen elementen kunnen samen worden getransformeerd en transformaties kunnen aan elkaar worden toegevoegd.

<svg xmlns="http://www.w3.org/2000/svg">
    <g transform="rotate(45)">
        <rect x="0" y="0" width="30" height="30" />
        <circle cx="5" cy="5" r="5" transform="scale(3)" />
    </g>
</svg>

Eerst wordt elk punt van de cirkel geschaald met de factor 3 ten opzichte van de oorsprong, waardoor het middelpunt van de cirkel naar het midden van de rechthoek op (15, 15) en zijn straal tot 15 wordt gebracht. Vervolgens worden de rechthoek en de cirkel wordt samen 45 graden rechtsom rond de oorsprong gedraaid.

vertalen

Verplaats een rechthoek 10 eenheden naar rechts en 20 eenheden omlaag:

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="0" y="0" width="30" height="30" transform="translate(10, 20)" />
</svg>

Verplaats het 0 eenheden horizontaal en 20 eenheden omhoog:

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="0" y="20" width="30" height="30" transform="translate(0, -20)" />
</svg>

Verplaats het 10 eenheden naar links en 0 eenheden verticaal:

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="10" y="0" width="30" height="30" transform="translate(-10)" />
</svg>

schaal

Schaal een rechthoek horizontaal met factor 2 en verticaal met factor 0.5:

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="10" y="10" width="40" height="40" transform="scale(2, 0.5)" />
</svg>

Het resultaat is gelijk aan

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="20" y="5" width="80" height="20" />
</svg>

Spiegel een rechthoek horizontaal:

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="0" y="0" width="20" height="40" transform="scale(-1, 1)" />
</svg>

Schaal werkt wel in relatie tot de oorsprong, dus dit is gelijk aan

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="-20" y="0" width="20" height="40" />
</svg>

draaien

Draai een polygoon 90 graden rechtsom rond de oorsprong:

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 30,0 15,20" transform="rotate(90)" />
</svg>

Het resultaat is gelijk aan

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 0,30 -20,15" />
</svg>

Het rotatiecentrum kan expliciet worden vermeld:

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 30,0 15,20" transform="rotate(90, 15, 15)" />
</svg>

Het resultaat is gelijk aan

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="30,0 30,30 10,15" />
</svg>

skewX, skewY

schuin een polygoon horizontaal met 45 graden:

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 30,0 30,30 0,30" transform="skewX(45)" />
</svg>

Het resultaat is gelijk aan

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 30,0 60,30 30,30" />
</svg>

x-waarden worden berekend als x + y * tan(angle) , y-waarden blijven ongewijzigd

een veelhoek verticaal 30 graden scheeftrekken:

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 30,0 30,30 0,30" transform="skewY(30)" />
</svg>

Het resultaat is gelijk aan (afronding mogelijk maken)

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 30,17.32 30,47.32 0,30" />
</svg>

x waarden blijven ongewijzigd, y waarden worden berekend als y + x * tan(angle)

Matrix

Pas een transformatiematrix toe op een polygoon:

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="0,0 30,0 30,30 0,30" transform="matrix(1,0.6,-1.2,1,40,10)" />
</svg>

Elk punt (x, y) wordt getransformeerd door matrix (a, b, c, d, e, f) als volgt toe te passen:

┌ x_new ┐    ┌ a  c  e ┐ * ┌ x_old ┐   ┌ x_old * a + y_old * c + e ┐
└ y_new ┘ =  └ b  d  f ┘   │ y_old │ = └ x_old * b + y_old * d + f ┘
                           └   1   ┘

Het resultaat is gelijk aan

<svg xmlns="http://www.w3.org/2000/svg">
    <polygon points="40,10 70,28 34,58 4,40" />
</svg>

Meerdere transformaties

Transformaties kunnen worden samengevoegd en van rechts naar links worden toegepast

Draai een rechthoek 90 graden en verplaats deze vervolgens 20 eenheden naar beneden en 20 eenheden naar rechts:

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="-10" y="-20" width="20" height="40"
        transform="translate(20 20) rotate(90)" />
</svg>

Het resultaat is gelijk aan

<svg xmlns="http://www.w3.org/2000/svg">
    <rect x="0" y="10" width="40" height="20" />
</svg>


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow