Sök…


Anmärkningar

Grafiska element kan ändras genom att lägga till ett transformattribut .

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

Istället för att det övre vänstra ursprunget återges vid koordinaterna (0, 0), kommer det att visas nedåt och höger, från punkt (10, 10).

Hela grupper av element kan transformeras tillsammans och transformationer kan lägga till varandra.

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

Först skalas varje punkt i cirkeln med faktorn 3 i förhållande till ursprunget, vilket bringar cirkelns centrum till mitten av rektangeln vid (15, 15) och dess radie till 15. Därefter rektangeln och cirkeln roteras tillsammans 45 grader medurs runt ursprunget.

Översätt

Flytta en rektangel 10 enheter till höger och 20 enheter nedåt:

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

Flytta den 0 enheter horisontellt och 20 enheter upp:

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

Flytta den 10 enheter till vänster och 0 enheter vertikalt:

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

skala

Skala en rektangel horisontellt med faktor 2 och vertikalt med faktor 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>

Resultatet motsvarar

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

Spegla en rektangel horisontellt:

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

Skala fungerar i förhållande till ursprunget, så det motsvarar

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

rotera

Vrid en polygon medsols 90 grader runt ursprunget:

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

Resultatet motsvarar

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

Rotationscentrumet kan ges uttryckligen:

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

Resultatet motsvarar

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

skewX, skewY

sneda en polygon horisontellt med 45 grader:

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

Resultatet motsvarar

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

x-värden beräknas som x + y * tan(angle) , y-värden förblir oförändrade

skeva en polygon vertikalt med 30 grader:

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

Resultatet motsvarar (möjliggör avrundning)

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

x-värden förblir oförändrade, y-värden beräknas som y + x * tan(angle)

matris

Applicera en transformationsmatris på en polygon:

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

Varje punkt (x, y) transformeras genom att använda matris (a, b, c, d, e, f) så här:

┌ 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   ┘

Resultatet motsvarar

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

Flera transformationer

Transformationer kan sammanlänkas och appliceras höger till vänster

Vrid en rektangel med 90 grader och flytta den sedan ned med 20 enheter och till höger med 20 enheter:

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

Resultatet motsvarar

<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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow