Suche…


Bemerkungen

Grafische Elemente können durch Hinzufügen eines Transformationsattributs geändert werden.

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

Anstatt den oberen linken Ursprung in Koordinaten (0, 0) zu rendern, wird er ab Punkt (10, 10) nach unten und rechts angezeigt.

Ganze Elementgruppen können zusammen transformiert werden, und Transformationen können sich gegenseitig ergänzen.

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

Zunächst wird jeder Punkt des Kreises mit dem Faktor 3 in Bezug auf den Ursprung skaliert, wodurch der Mittelpunkt des Kreises bei (15, 15) zur Mitte des Rechtecks ​​und sein Radius auf 15 gebracht werden Der Kreis wird zusammen um 45 Grad im Uhrzeigersinn um den Ursprung gedreht.

Übersetzen

Verschiebe ein Rechteck 10 Einheiten nach rechts und 20 Einheiten nach unten:

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

Verschiebe 0 Einheiten horizontal und 20 Einheiten nach oben:

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

Verschiebe es um 10 Einheiten nach links und 0 Einheiten vertikal:

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

Rahmen

Skalieren Sie ein Rechteck horizontal um den Faktor 2 und vertikal um den 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>

Das Ergebnis ist äquivalent zu

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

Ein Rechteck horizontal spiegeln:

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

Die Waage arbeitet in Bezug auf den Ursprung, also entspricht dies dem

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

drehen

Drehen Sie ein Polygon um 90 Grad im Uhrzeigersinn um den Ursprung:

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

Das Ergebnis ist äquivalent zu

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

Der Drehpunkt kann explizit angegeben werden:

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

Das Ergebnis ist äquivalent zu

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

SkewX, SkewY

ein Polygon horizontal um 45 Grad neigen:

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

Das Ergebnis ist äquivalent zu

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

x-Werte werden als x + y * tan(angle) berechnet, y-Werte bleiben unverändert

ein Polygon vertikal um 30 Grad neigen:

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

Das Ergebnis ist äquivalent zu (unter Berücksichtigung von Rundungen)

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

x-Werte bleiben unverändert, y-Werte werden als y + x * tan(angle) berechnet

Matrix

Wenden Sie eine Transformationsmatrix auf ein Polygon an:

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

Jeder Punkt (x, y) wird durch Anwenden der Matrix (a, b, c, d, e, f) wie folgt transformiert:

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

Das Ergebnis ist äquivalent zu

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

Mehrere Transformationen

Transformationen können verkettet werden und werden von rechts nach links angewendet

Drehen Sie ein Rechteck um 90 Grad und verschieben Sie es um 20 Einheiten nach unten und um 20 Einheiten nach 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>

Das Ergebnis ist äquivalent zu

<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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow