FabricJS渐变颜色值

问题描述:

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

对于x1的值10,它覆盖的区域比x2 = 10更多。 如何管理(top,right,bottom,left)的相同梯度范围?

PS:对于右侧,我试图通过保持颜色顺序相同来给出最大值,比形状的侧面多出150%。 这是我的工作小提琴fiddle1和改变颜色顺序fiddle2

的一点是,X1,X2,Y1,Y2不上,左,下,保证金小提琴2。

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 

如果您使用不同的号码,所有的坐标,梯度将得到一个角度,不会与宽度或高度一致。