2017-10-12 10 views
0

私は、とcolorStops={0:'red',1:'black'}を実行すると、値が(x1,y1,x2,y2)の線形のもので、左側が黒色でグラデーションが適用されています。しかし、私が(0,0,10,0)またはcolorStops={0:'black',1:'red'} [色を切り替える]のいずれかの形の右側から開始したい場合、値(グラジエント範囲)は同じになることはありません。FabricJSグラディエントカラー値

x1の値が10の場合は、x2 = 10の場合よりも大きくなります。 (top,right,bottom,left)の等勾配範囲はどのように管理できますか?

PS:右側には、色の順番を同じに保つことによって形状の側面が最大150%増えるようにしました。x2 は、ここに私の作業フィドルfiddle1fiddle2

答えて

0

ポイントがトップされないX1、X2、Y1、Y2、左、下、余裕ある色の順序を変更するにフィドル2です。

は、それらが勾配に住んでいるセグメントを定義する点に説明

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

2点P1、P2であり、それらのそれぞれの座標。

最初に理解しなければならないことは、直線的なグラデーションが色が変化しない方向に無限に広がることです。

これで4つのマージンを与えることはできず、フレームのように見えるようにすることはできません。

あなたは生地形状、幅100、高さ50を持つRECTを取る場合、あなたはこのように、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 

あなたはすべての座標の異なる番号を使用する場合は、勾配は角度を取得し、幅や高さに揃えされることはありません。