我使用的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>

我已经能够读取 颜色 从梯度(停止的风格),并且他们的 间隔 通过梯度(停止的偏移量).

好了,所以现在我已经有了一个 好的梯度合适的颜色适量的空间 他们之间,但与 没有旋转或规模, 及其 关闭位置!.

答案是喂 一个 矩阵 到闪光的梯度的功能。


方法1:使用提供的矩阵

矩阵提供 通过SVG, gradientTransform="矩阵(a,b,c,d,e,f)" 看来是有效的无用的,因为当你喂, 矩阵 到闪光的 beginGradientFill()function, 它显示了坡度 拉伸 在这么多的形状所以只有中心的颜色渐变是可见的,像一个坚实的填补。


方法2:产生一矩阵使用2梯度点

  • x1,y1 标记可能是点上屏幕 梯度开始。
  • x2,y2 标签,可能是点上屏幕 梯度结束。

当我说"2梯度点",我指的x1,y1and x2,y2,这主要是告诉你 在上的形状 不会的 梯度开始和结束。

还有 矩阵。createGradientBox() 功能 它创建了一个矩阵使用的渐变,但参数 非常不同于什么SVG 给我。它希望:

  1. ---使用之间的相对距离2梯度点在这里(X轴)
  2. 高度 ---使用之间的相对距离2梯度点在这里(Y轴), 却得到了错误的结果 ---还尝试使用 之间的距离2梯度点 在这里,但是我不知道什么来填补入宽!
  3. 转角 -所使用的角度2梯度分,在弧度, 用错误的结果!
  4. 翻译x -试图1日渐点的X,还试图0, 用错误的结果!
  5. 翻译y -试图1日渐变的一点是Y,还试图0, 用错误的结果!

什么SVG数据可以用于产生一个梯度矩阵为闪光?

(看SVG段所述, 这是所有的数据,我已描述的梯度)

有帮助吗?

解决方案

怎么画的线性度梯度使用2梯度点

  1. x1,y1and x2,y2 都2点 画面协调空间, ,梯度为由,向。
  2. 使用 矩阵变换 提供的SVG 偏x1,y1and x2,y2点。 -- gradientTransform="矩阵(a,b,c,d,e,f)
  3. 绘制的梯度从x1,y1to x2,y2。

x1,y1,x2,y2代表的价值观的 协调系统,该系统的结果 把当前用户的协调系统元件 引用的梯度 (通过一个 '填写'或'笔财产)在 时间梯度元 引用, 然后施加的 改变指定的属性 gradientTransform.

通过 W3C的文档.

其他提示

SVG呈现的引擎!

也许有一些答案 在这里, 可以提供帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top