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); 这是在画布上绘制渐变时的样子: |