显示SVG梯度使用闪光灯?
-
19-08-2019 - |
题
我使用的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 给我。它希望:
- 宽 ---使用之间的相对距离2梯度点在这里(X轴)
- 高度 ---使用之间的相对距离2梯度点在这里(Y轴), 却得到了错误的结果 ---还尝试使用 之间的距离2梯度点 在这里,但是我不知道什么来填补入宽!
- 转角 -所使用的角度2梯度分,在弧度, 用错误的结果!
- 翻译x -试图1日渐点的X,还试图0, 用错误的结果!
- 翻译y -试图1日渐变的一点是Y,还试图0, 用错误的结果!
什么SVG数据可以用于产生一个梯度矩阵为闪光?
(看SVG段所述, 这是所有的数据,我已描述的梯度)
解决方案
怎么画的线性度梯度使用2梯度点
- x1,y1and x2,y2 都2点 画面协调空间, ,梯度为由,向。
- 使用 矩阵变换 提供的SVG 偏x1,y1and x2,y2点。 -- gradientTransform="矩阵(a,b,c,d,e,f)
- 绘制的梯度从x1,y1to x2,y2。
即
x1,y1,x2,y2代表的价值观的 协调系统,该系统的结果 把当前用户的协调系统元件 引用的梯度 (通过一个 '填写'或'笔财产)在 时间梯度元 引用, 然后施加的 改变指定的属性 gradientTransform.
通过 W3C的文档.
其他提示
SVG呈现的引擎!
也许有一些答案 在这里, 可以提供帮助。
不隶属于 StackOverflow