2009-07-09 12 views
2

Ich habe folgende radiale Gradienten:SVG Linear Gradient-Skala und Übersetzung Frage

<radialGradient 
    inkscape:collect="always" 
    xlink:href="#linearGradient2454" 
    id="radialGradient2460" 
    cx="4022.8572" 
    cy="5451.2656" 
    fx="4022.8572" 
    fy="5451.2656" 
    r="3559.865" 
    gradientTransform="matrix(-0.1071067,-0.1166362,0.1377765,-7.0459663e-2,276.61943,1452.439)" 
    gradientUnits="userSpaceOnUse" /> 

Ich mag um 90% dieses Gradienten in der Größe reduzieren und übersetze es auf diesen neuen Maßstab in geeigneter Weise auf Basis (x-Position wird 402.2, y-Position wird 545.1, usw.).

Offensichtlich bringt mich das Multiplizieren von cx, cy, fx, fy und r mit .1 einen Teil des Weges dorthin. Wie aber überarbeite ich gradientTransform programmatisch um den Rest des Weges zu bekommen?

+0

"(x-Position 402, y-Position wird wird 5451" Sie vertippt, rechts –

+0

Ja ... Typo Thx :) – jsight

Antwort

2

Ich würde die Parameter (Cx, FX, R usw.) unberührt lassen. Einfach die vorhandene Transformationsmatrix mit einer neuen Matrix für die Skalierung multiplizieren. Die resultierende Matrix ist die neue Transformationsmatrix für Ihren Farbverlauf.

Wenn Sie um das Zentrum skalieren möchten, müssen Sie auch eine Übersetzung in die Skalierungsmatrix hinzufügen.

So würde dies s für Skalierungsfaktor sein = 0,1:..

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))