3

次の放射状グラデーションがあります。

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

このグラデーションのサイズを 90% 縮小し、この新しいスケール (x 位置は 402.2、y 位置は 545.1 など) に基づいて適切に変換したいと思います。

明らかに、cx、cy、fx、fy、および r を .1 倍すると、そこに到達することができます。しかし、どのようにプログラムでgradientTransformを作り直して残りの道を得るのですか?

4

1 に答える 1

2

パラメータ (cx、fx、r など) はそのままにしておきます。既存の変換行列にスケーリング用の新しい行列を掛けるだけです。結果のマトリックスは、グラデーションの新しい変換マトリックスです。

中心を中心にスケーリングする場合は、スケーリング マトリックスに平行移動も追加します。

したがって、これはスケーリング係数 s = 0.1 の場合です。

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
于 2009-07-10T11:17:26.330 に答える