Pregunta

Tengo el siguiente 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" />

Me gustaría reducir este gradiente de tamaño en un 90% y traducirlo adecuadamente basada en esta nueva escala (posición x se convierte en 402.2, y se hace cargo 545.1, etc).

Obviamente, multiplicando cx, cy, fx, fy, yr por 0.1 me va a obtener una parte del camino allí. Sin embargo, ¿cómo puedo programáticamente reelaborar el gradientTransform para obtener el resto del camino?

¿Fue útil?

Solución

Me gustaría dejar los parámetros (cx, fx, R, etc.) sin tocar. Sólo multiplica la matriz de transformación existente con una nueva matriz para el escalamiento. La matriz resultante es la matriz de transformación nuevo para su gradiente.

Si desea escalar alrededor del centro, entonces también tiene añadir una traducción en la matriz de escalamiento.

Así que esto sería para el factor de escala s = 0.1:

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top