SVG Linear Gradient Escala e Tradução Pergunta
-
12-09-2019 - |
Pergunta
I têm o seguinte gradiente radial:
<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" />
gostaria de reduzir esta inclinação em tamanho em 90% e traduzi-lo adequadamente com base nesta nova escala (x posição torna-se 402,2, y posição torna-se 545,1, etc).
Obviamente, multiplicando cx, cy, fx, fy, e r por 0,1 me obter parte do caminho até lá. No entanto, como faço para programaticamente refazer o gradientTransform para obter o resto do caminho?
Solução
Eu deixaria os parâmetros (cx, fx, r etc) intocadas. Basta multiplicar a matriz de transformação existente por uma nova matriz para o dimensionamento. A matriz resultante é a nova matriz de transformação para o seu gradiente.
Se você quiser escalar em torno do centro, em seguida, você também tem adicionar uma tradução na matriz de escala.
Portanto, este seria fator de escala s = 0,1:
newGradientTansform =
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))