Question

I ai le gradient radial suivant:

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

Je voudrais réduire ce gradient taille de 90% et de le traduire de façon appropriée basée sur cette nouvelle échelle (position x devient 402,2, la position y devient 545,1, etc).

De toute évidence, la multiplication cx, cy, fx, fy et r par .1 me faire une partie du chemin. Cependant, comment puis-je retravaille le programatically gradientTransform pour obtenir le reste du chemin?

Était-ce utile?

La solution

Je laisserais les paramètres (cx, fx, r, etc) intacte. Il suffit de multiplier la matrice de transformation existante par une nouvelle matrice pour la mise à l'échelle. La matrice résultante est la nouvelle matrice de transformation pour votre gradient.

Si vous voulez à l'échelle autour du centre, vous avez également ajouter une traduction dans la matrice de mise à l'échelle.

Ce serait donc pour le facteur d'échelle s = 0,1:

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top