我正在使用AS3(Flash)来读取SVG文件并显示它们。 问题是正确显示线性/径向渐变。
以下是SVG中从红色到蓝色的简单线性渐变的示例。
<linearGradient id="GRADIENT_1" gradientUnits="userSpaceOnUse"
x1="107.3938" y1="515.5684" x2="105.2488" y2="428.8614"
gradientTransform="matrix(0.9988 0.0485 0.0485 -0.9988 0.8489 711.6634)">
<stop offset="0" style="stop-color:red"/>
<stop offset="1" style="stop-color:blue"/>
</linearGradient>
我已经能够从渐变(停止的样式)读取颜色,并通过渐变(停止的偏移)读取间距。
好的,现在我有一个漂亮渐变,它们之间的正确的颜色和正确的空间,但是没有旋转或缩放,其关闭位置!。
答案是将a Matrix提供给Flash的渐变功能。
SVG的 Matrix supplied ,gradientTransform="matrix(a,b,c,d,e,f)"似乎无效,因为当您将矩阵提供给Flash的beginGradientFill() function时,它在形状上显示渐变拉伸,因此只有渐变的中心颜色可见,如实心填充。
当我说“2个渐变点”时,我指的是x1,y1和x2,y2,它们主要是告诉你 渐变开始时的形状 端。
Matrix.createGradientBox() function创建了一个用于渐变的矩阵,但参数与SVG 给出的非常不同。 它想要:
(请查看上面的SVG代码段,这是我描述渐变的所有数据)
答案 0 :(得分:1)
即
x1,y1,x2,y2代表的值 由此产生的坐标系 为元素提供当前用户坐标系 引用渐变(通过a 在'填充'或'中风'财产) 渐变元素的时间 引用,然后然后应用 由属性指定的转换 gradientTransform 强>
通过W3C Docs。
答案 1 :(得分:0)
也许有一些答案here可以提供帮助。