java - SVG 线性渐变比例和平移问题

标签 java math svg linear-algebra matrix-multiplication

我有以下径向渐变:

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

相关文章:

java - 无法提取节点下的子节点名称

java - Collections.sort() 在大型 ArrayList 中失败,经常排序

javascript - 相对于点javascript放置对象

c# - 如何找到图像的旋转角度?

html - 如何为书法文字制作动画,就好像它是手写的一样

android - 是否可以在 Xamarin.Android 中将 SVG 用于 ImageButton?如果是这样,如何?

javascript - 缩放 d3 v4 map 以适合 SVG(或完全适合)

java - 累积字符串集合散列

java - 当用户输入不满足特定条件时返回到程序的开头

java - 无法正确设置我的 pom.xml 以将变量传递到 XML 文件