html5 Canvas漸變是可以用作形狀的填充或筆觸的顏色模式,而不是純色。漸變是從一種顏色漸變到另一種顏色的顏色模式。漸變有兩種類型:Linear(線性)和Radial(徑向) html5 Canvas漸變是可以用作形狀的填充或筆觸的顏色模式,而不是純色。漸變是從一種顏色漸變到另一種顏色的顏色模式。這里有一些示例來說明我的意思: 有兩種類型的漸變: Linear(線性) 線性漸變使用水平,垂直或對角線的線性圖案更改顏色。 線性漸變如前所述,線性漸變使用線性圖案更改顏色。使用2D上下文函數創建線性漸變 createLinearGradient()。這是一個示例: var canvas = document.getElementById("ex1");var context = canvas.getContext("2d"); var x1 = 0; var y1 = 0; var x2 = 100; var y2 = 0; var linearGradient1 = context.createLinearGradient(x1, y1, x2, y2); 該createLinearGradient()函數采用4個參數:x1,y1,x2,y2。這4個參數確定漸變圖案的方向和延伸。梯度從第一點x1,y1延伸到第二點x2,y2。 var x1 = 0; var y1 = 0; var x2 = 100; var y2 = 0; var linearGradient1 = context.createLinearGradient(x1, y2); 通過僅更改y軸上的參數值(對于y1和y2)來創建垂直漸變,如下所示: var x1 = 0; var y1 = 0; var x2 = 0; var y2 = 100; var linearGradient1 = context.createLinearGradient(x1, y2); 通過同時更改x和y軸參數來創建對角線漸變。這是一個示例: var x1 = 0; var y1 = 0; var x2 = 100; var y2 = 100; var linearGradient1 = context.createLinearGradient(x1, y2); 顏色停止上面的示例未顯示漸變的顏色。為了設置漸變的顏色,可以addColorStop()在漸變對象上使用該功能。這是一個示例: var linearGradient1 = context.createLinearGradient(0,100,0); linearGradient1.addColorStop(0, 'rgb(255, 0, 0)'); linearGradient1.addColorStop(1, 'rgb( 0, 0)'); 該addColorStop()函數有2個參數。第一個參數是介于0和1之間的數字。該數字表明此色標將放置在漸變區域中的距離。第二個參數是顏色本身。請注意,此示例如何使用rbg(red,green,blue)顏色表示法,其中每個紅色/綠色/藍色值可以是0到255之間的數字(以1個字節表示)。 var linearGradient1 = context.createLinearGradient(0,0); linearGradient1.addColorStop(0 , 0)'); linearGradient1.addColorStop(0.5, 255); linearGradient1.addColorStop(1 , 0)'); 此示例添加了位于漸變中間的藍色。漸變將因此從紅色平滑變為藍色,然后變為黑色。 使用漸變作為填充或描邊樣式您可以將漸變用作填充或筆觸樣式。只需將2D上下文fillStyle或strokeStyle屬性設置為指向漸變對象即可完成此操作。這是一個示例: var linearGradient1 = context.createLinearGradient(0, 0)'); context.fillStyle = linearGradient1; context.strokeStyle = linearGradient1; 現在,您可以使用漸變作為填充或描邊顏色進行繪制。這是一個繪制兩個矩形的示例-一個被填充,另一個被描邊(概述): <canvas id="ex2" width="500" height="125" style="border: 1px solid #cccccc;"> HTML5 Canvas not supported </canvas> <script> var canvas = document.getElementById("ex2"); var context = canvas.getContext("2d"); var linearGradient1 = context.createLinearGradient(0,0); //horizontal gradient linearGradient1.addColorStop(0 , 0)'); linearGradient1.addColorStop(0.5, 255)'); linearGradient1.addColorStop(1 , 0)'); context.fillStyle = linearGradient1; context.fillRect(10,10, 100); var linearGradient2 = context.createLinearGradient(125, 225,0); //horizontal gradient linearGradient2.addColorStop(0 , 0)'); linearGradient2.addColorStop(0.5, 255)'); linearGradient2.addColorStop(1 , 0)'); context.strokeStyle = linearGradient2; context.strokeRect(125, 10, 100, 100); </script> 這是在畫布上繪制時的結果: 漸變梯度范圍重要的是要了解漸變的程度。如果漸變從x = 10擴展到x = 110,則只有x值在10到110之間的圖形才會應用漸變顏色。在此區域之外繪制的圖形仍會受到漸變的影響,但是將使用漸變的第一種或最后一種顏色進行繪制。 <canvas id="ex3" width="500" height="250" style="border: 1px solid #cccccc;"> HTML5 Canvas not supported </canvas> <script> var canvas = document.getElementById("ex3"); var context = canvas.getContext("2d"); var linearGradient1 = context.createLinearGradient(150, 350, 'rgb(0, 0, 255)'); linearGradient1.addColorStop(1, 255, 0)'); context.fillStyle = linearGradient1; context.fillRect(10,130, 100); context.fillRect(150, 200, 100); context.fillRect(360, 130, 100); context.fillRect(100,120, 150, 100); context.fillRect(280, 100); </script> 這就是在畫布上繪制時的結果。請注意,只有x值在150到350之間的圖形才具有漸變顏色,而其余圖形是全藍色(第一個色標)或全綠色(最后一個色標)。 本示例僅在漸變中使用2種顏色,但是如果在漸變中使用3種或更多顏色,則效果相同。在漸變區域之外,僅使用第一個和最后一個停止色。 漸變程度對于理解正確著色形狀很重要。在許多情況下,可能必須為每種形狀專門定義漸變,以適合繪制形狀的區域。 徑向漸變徑向漸變類型是從內部顏色向外延伸到一種或多種其他顏色的圓形圖案。以下是一些圖形示例: 徑向漸變由2個圓定義。每個圓都有一個中心點和一個半徑。這是一個代碼示例: var x1 = 100; // x of 1. circle center point var y1 = 100; // y of 1. circle center point var r1 = 30; // radius of 1. circle var x2 = 100; // x of 2. circle center point var y2 = 100; // y of 2. circle center point var r2 = 100; // radius of 2. circle var radialGradient1 = context.createradialGradient(x1, r1, y2, r2); radialGradient1.addColorStop(0, 255)'); radialGradient1.addColorStop(1, 0)'); context.fillStyle = radialGradient1; context.fillRect(10, 200); 如您所見,定義了兩個中心點(x1,y1和x2,y2),并且定義了兩個半徑(r1和r2)。這些作為參數傳遞給createradialGradient()2D上下文的功能。 如果兩個圓具有相同的中心點,則漸變將是完全圓形的,并且顏色從內圓到外圓漸變。如果兩個圓的中心點不同,則漸變將更像圓錐形,就像從燈投射的光(非正交地指向表面)一樣。這是一個類似錐形的代碼示例: var x1 = 100; var y1 = 100; var r1 = 30; var x2 = 150; var y2 = 125; var r2 = 100; var radialGradient1 = context.createradialGradient(x1, r2); radialGradient1.addColorStop(0, 200); 這是在畫布上繪制漸變時的樣子: |