2009-07-09 76 views
2

我有以下径向梯度:SVG线性渐变缩放和平移问题

<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以获得其余的方法?

+0

“(x位置变成402,y坐标成为5451” 输入错误,正确 – 2009-07-10 14:46:07

回答

2

我会保留参数(cx,fx,r等)不变。只需将现有变换矩阵乘以一个新的缩放矩阵即可。得到的矩阵是您的渐变的新变换矩阵。

如果您想围绕中心进行缩放,那么您还可以在缩放矩阵中添加翻译。

因此,这将是缩放因子S = 0.1:。

newGradientTansform = 
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))