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?

Foi útil?

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))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top