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 乘以 0.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 回答