HTML5简明教程-1.1.4.HTML5Canvas参考手册 之 线性渐变 createLinearGradient
本文连接:http://blog.csdn.net/tomorrow13210073213/article/details/42453769
转载请注明出处
HTML5的canvas为我们提供了类似于CSS3中linear-gradient属性定义的渐变效果,用createLinearGradient()方法可以创建基于画布的线性渐变,创建好的线性渐变可以用于填充路径、定义笔触等。同时,HTML5也为我们提供了createRadialGradient()方法用于创建放射渐变,我们将在另一篇博文中详细介绍。
方法:createLinearGradient()
方法名:createLinearGradient()
方法描述:用于创建基于整个画布的线性渐变,该渐变可以用于填充路径或定义笔触(作为属性fillStyle或strokeStyle的值)
js语法:context.createLinearGradient(x0,y0,x1,y1);
参数:x0:渐变开始点的 x 坐标,
参数:y0:渐变开始点的 y 坐标,
参数:x1:渐变结束点的 x 坐标,
参数:y1:渐变结束点的 y 坐标
浏览器兼容:IE 9、Firefox、Opera、Chrome 以及 Safari 支持 createLinearGradient() 方法。
使用注意:(1)获得渐变对象后,我们要使用 addColorStop() 方法规定不同的颜色,以及在渐变对象中的何处定位颜色。关于该方法,另有博文详述。
(2)我们用createLinearGradient()方法定义的渐变是基于整个canvas的,仅仅通过定义该渐变是看不到的,将该渐变定义为属性fillStyle或strokeStyle的值后,我们实际是将路径定义的矩形(面或笔触)、圆形(面或笔触)部分的渐变显示出来。
废话不多讲,下面是测试代码,js注释中有相关测试的描述:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Html5 Canvas createLinearGradient</title> <style type="text/css"> body { margin: 0px; width: 440px; } canvas { float: left; margin-left: 10px; margin-top: 10px; } </style> </head> <body> <!-- createLinearGradient() 方法创建线性的渐变对象。 渐变可用于填充矩形、圆形、线条、文本等等。 该对象一般作为 strokeStyle 或 fillStyle 属性的值。 用方法 addColorStop() 规定不同的颜色,以及在 gradient 对象中的何处定位颜色。 语法:context.createLinearGradient(x0,y0,x1,y1); 参数:x0:渐变开始点的 x 坐标, 参数:y0:渐变开始点的 y 坐标, 参数:x1:渐变结束点的 x 坐标, 参数:y1:渐变结束点的 y 坐标 --> <!-- addColorStop() 方法规定 gradient 对象中的颜色和位置。 addColorStop() 方法与 createLinearGradient() 或 createRadialGradient() 一起使用。 可以多次调用 addColorStop() 方法来改变渐变,理论上可以定义无限中间色。如果您不对 gradient 对象使用该方法,那么渐变将不可见。为了获得可见的渐变,您需要创建至少一个色标。 语法:gradient.addColorStop(stop,color); 参数:stop:介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置。 参数:color:在结束位置显示的 CSS 颜色值。 --> <canvas id="can0" width="430" height="100"></canvas> <canvas id="can" width="100" height="100"></canvas> <canvas id="can2" width="100" height="100"></canvas> <canvas id="can3" width="100" height="100"></canvas> <canvas id="can4" width="100" height="100"></canvas> <canvas id="can5" width="430" height="100"></canvas> <canvas id="can6" width="430" height="100"></canvas> <canvas id="can7" width="430" height="100"></canvas> <canvas id="can8" width="430" height="100"></canvas> </body> <script type="text/javascript"> //可以用0-1之间的值定义中间颜色,理论上讲可以定义无限中间颜色 var c0 = document.getElementById('can0'); var cC0 = c0.getContext('2d'); //参数:(渐变开始点的 x 坐标,渐变开始点的 y 坐标,渐变结束点的 x 坐标,渐变结束点的 y 坐标) //该方法的参数需要注意,后两个参数是坐标而不是长度,这一点与绘制矩形的相关方法不同 var lg0 = cC0.createLinearGradient(0, 0, 430, 0); lg0.addColorStop(0, '#823835'); lg0.addColorStop(0.1, '#8abeb2'); lg0.addColorStop(0.2, '#c9ba83'); lg0.addColorStop(0.3, '#ddd38c'); lg0.addColorStop(0.4, '#de9c52'); lg0.addColorStop(0.5, '#44b37e'); lg0.addColorStop(0.6, '#823835'); lg0.addColorStop(0.7, '#8abeb2'); lg0.addColorStop(0.8, '#c9ba83'); lg0.addColorStop(0.9, '#ddd38c'); lg0.addColorStop(1, '#de9c52'); cC0.fillStyle = lg0; cC0.fillRect(0, 0, 430, 100); //左上角到右下角的渐变 var c = document.getElementById('can'); var cC = c.getContext('2d'); var lg = cC.createLinearGradient(0, 0, 100, 100); lg.addColorStop(0, 'red'); lg.addColorStop(0.5, 'yellow'); lg.addColorStop(1, 'green'); cC.fillStyle = lg; cC.fillRect(0, 0, 100, 100); //垂直渐变 var c2 = document.getElementById('can2'); var cC2 = c2.getContext('2d'); var lg2 = cC2.createLinearGradient(0, 0, 0, 100); lg2.addColorStop(0, 'red'); lg2.addColorStop(0.5, 'yellow'); lg2.addColorStop(1, 'green'); cC2.fillStyle = lg2; cC2.fillRect(0, 0, 100, 100); //水平渐变 var c3 = document.getElementById('can3'); var cC3 = c3.getContext('2d'); var lg3 = cC3.createLinearGradient(0, 0, 100, 0); lg3.addColorStop(0, 'red'); lg3.addColorStop(0.5, 'yellow'); lg3.addColorStop(1, 'green'); cC3.fillStyle = lg3; cC3.fillRect(0, 0, 100, 100); //左下角到右上角的渐变 var c4 = document.getElementById('can4'); var cC4 = c4.getContext('2d'); var lg4 = cC4.createLinearGradient(0, 100, 100, 0); lg4.addColorStop(0, 'red'); lg4.addColorStop(0.5, 'yellow'); lg4.addColorStop(1, 'green'); cC4.fillStyle = lg4; cC4.fillRect(0, 0, 100, 100); //createLinearGradient()方法所定义的渐变是针对于整个canvas的渐变, //当起点坐标不是0时,起点之前的颜色将是起点颜色(addColorStop(0, 'red')), //终点之后的颜色将是终点颜色(lg5.addColorStop(1, 'green')) var c5 = document.getElementById('can5'); var cC5 = c5.getContext('2d'); var lg5 = cC5.createLinearGradient(100, 0, 300, 0); lg5.addColorStop(0, 'red'); lg5.addColorStop(0.5, 'yellow'); lg5.addColorStop(1, 'green'); cC5.fillStyle = lg5; cC5.fillRect(0, 0, 430, 100); //正如前文所说,用createLinearGradient()方法定义渐变的渐变是针对于整个canvas的渐变, //我们用该渐变作为填充或笔触进行绘制时,实际是将我们绘制部分的渐变颜色显示出来 var c6 = document.getElementById('can6'); var cC6 = c6.getContext('2d'); var lg6 = cC6.createLinearGradient(100, 0, 300, 0); lg6.addColorStop(0, 'red'); lg6.addColorStop(0.5, 'yellow'); lg6.addColorStop(1, 'green'); cC6.fillStyle = lg6; cC6.fillRect(0, 0, 100, 100); cC6.fillRect(330, 0, 100, 100); cC6.fillRect(150, 0, 100, 100); //createLinearGradient()方法所定义的渐变是针对于整个canvas的渐变, //当起点坐标不是0时,起点之前的颜色将是起点颜色(addColorStop(0, 'red')), //终点之后的颜色将是终点颜色(lg5.addColorStop(1, 'green')) var c7 = document.getElementById('can7'); var cC7 = c7.getContext('2d'); var lg7 = cC7.createLinearGradient(0, 0, 0, 100); lg7.addColorStop(0, 'red'); lg7.addColorStop(0.5, 'yellow'); lg7.addColorStop(1, 'green'); cC7.fillStyle = lg7; cC7.fillRect(0, 0, 430, 100); //正如前文所说,用createLinearGradient()方法定义渐变的渐变是针对于整个canvas的渐变, //我们用该渐变作为填充或笔触进行绘制时,实际是将我们绘制部分的渐变颜色显示出来 var c8 = document.getElementById('can8'); var cC8 = c8.getContext('2d'); var lg7 = cC8.createLinearGradient(0, 0, 0, 100); lg7.addColorStop(0, 'red'); lg7.addColorStop(0.5, 'yellow'); lg7.addColorStop(1, 'green'); cC8.fillStyle = lg7; cC8.fillRect(0, 0, 100, 100); cC8.fillRect(330, 0, 100, 100); cC8.fillRect(165, 0, 100, 100); </script> </html>
下面是测试效果图:
(图片传不上来啊,csdn咋啦,大家自己测试吧)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。