SVG线性渐变缩放和平移问题
-
12-09-2019 - |
题
我有以下径向梯度:
<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,等等)。
显然,.1乘CX,CY,FX,FY和r会得到我的存在方式的一部分。但是,我怎么编程返工gradientTransform拿到剩下的路?
解决方案
我将离开参数(CX,FX,R等)不变。只是对于该缩放一个新的矩阵乘法现有的变换矩阵。将得到的矩阵为您的梯度新的变换矩阵。
如果要缩放围绕中心,那么你还可以在缩放矩阵添加一个翻译。
因此,这将是缩放因子S = 0.1:
newGradientTansform =
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
不隶属于 StackOverflow