我有以下径向渐变:
<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 以完成剩下的工作?
最佳答案
我会保留参数(cx、fx、r 等)不变。只需将现有的变换矩阵乘以一个新矩阵即可进行缩放。生成的矩阵是梯度的新变换矩阵。
如果您想围绕中心缩放,那么您还需要在缩放矩阵中添加平移。
所以这将适用于比例因子 s = 0.1:
newGradientTansform =
oldGradienTransform * matrix(s, 0, 0, s, -cx*(s-1), -cy*(s-1))
关于java - SVG 线性渐变比例和平移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1106907/