javascript - FabricJS 渐变颜色值

标签 javascript html css html5-canvas fabricjs

我在 fabricJS 中尝试具有不同形状和值的渐变颜色,我遇到的是具有值 (x1,y1,x2,y2) 的线性颜色,如果我们这样做(10 ,0,0,0)colorStops={0:'red',1:'black'} 它从左侧开始采用黑色并应用渐变。但是如果我想从形状的右侧开始,那么我可以 (0,0,10,0)colorStops={0:'black',1:'red' }[切换颜色],但值(梯度范围)并不相同。

对于 x1 的值为 10,它覆盖的区域比我们做 x2 = 10 时更大。 如何管理(top,right,bottom,left) 的相等梯度范围?

PS:对于右侧,我试图通过保持相同的颜色顺序,为 x2 提供最大值,比形状的一侧多 150%。 这是我的工作 fiddle fiddle1和 fiddle 2 改变颜色顺序 fiddle2

最佳答案

重点是 x1,x2,y1,y2 不是 top,left,bottom,margin.

是2个点p1和p2,以及它们各自的坐标

p1 = { x1, y1 }, p2 = { x2, y2 }.

它们描述了定义梯度存在的片段的点。

首先你要明白的是,线性渐变在一个方向上无限延伸,即颜色不变的方向。

所以你不能给它 4 个边距并期望它们像框架一样。

如果您采用宽度为 100 和高度为 50 的矩形织物形状,您可以定义一个线性水平渐变,左右边距为 10 像素,这样:

x1: 10
x2: WIDTH - 10
y1: any number
y2: the same number as y1.

这将使渐变从 10 移动到 90,并具有开始/结束颜色的第一个和最后 10 个像素。无论颜色顺序如何。

如果你想要一个垂直的:

x1: any number
x2: the same number as x2.
y1: 10
y2: HEIGHT - 10

如果您对所有坐标使用不同的数字,渐变将获得一个 Angular ,并且不会与宽度或高度对齐。

关于javascript - FabricJS 渐变颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46706855/

相关文章:

html - 正文和页脚中的无序列表列

javascript - 使用 Webpack 添加图像并在 sass 中使用它

javascript - 如何将 JS 源映射添加到 Chrome devtools?

Javascript 嵌套对象默认回退选项

javascript - 我如何在元素发生变化时播放声音,就像 SO Chat 那样?

html - Iphone safari 无法在键盘打开时调整视口(viewport)大小

html - 在 IE7 中垂直居中 block <a>

html - CSS比例图像重叠

javascript - 更新 Jade 页面的一部分?

JavaScript "x in obj": obj. x 未定义?