关于径向渐变,其实和线性渐变一样都是Photoshop渐变类型的一种,不同的是径向渐变是以圆的半径为渐变轴,而线性渐变是以直线为渐变轴。本文提供了html5自带的Canvas实现的渐变效果,并带有演示案例
查看演示页面 View Demo
关于径向渐变,其实和线性渐变一样都是Photoshop渐变类型的一种,不同的是径向渐变是以圆的半径为渐变轴,而线性渐变是以直线为渐变轴。
通过上一章的学习,我们知道绘制线性渐变图形用到了一个非常重要的函数——createLinearGradiend();当然,我们要绘制径向渐变也会有类型的方法。
context.createRadialGradient(xStart, yStart, radiusStart, xEnd, yEnd, radiusEnd);
是不是觉得和线性渐变的函数很类似?是的,在径向渐变的设置中,我们只是把createLinearGradiend()方法换成createRadialGradient()方法;把参数由4个增加到了6个;把addColorStop()偏移量设置,也从原来的2个增加到了3个。
参数值方面,径向渐变只是增加了渐变初始圆的半径位置和渐变结束圆的半径位置而已。
<1>xStart:渐变起始点的横坐标;
<2>yStart:渐变起始点的纵坐标;
<3>xEnd:渐变结束点横坐标;
<4>yEnd:渐变结束点纵坐标;
<5>radiusStart:渐变开始圆的半径;
<6>radiusEnd:渐变结束圆的半径。
通过以上的讲解,再加上之前一章学习的addColorStop方法,我们就可以绘制出非常漂亮的渐变了,它同样也需要设定个0-1之间的浮点数来作为渐变转折点的偏移量。
好的,现在直接上案例:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>用Canvas绘制径向渐变图形</title> <script type="text/javascript"> window.onload = function() { var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); var g1 = context.createRadialGradient(400, 0, 0, 400, 0, 400); g1.addColorStop(0.1, "rgb(255, 255, 0)"); g1.addColorStop(0.3, "rgb(255, 0, 255)"); g1.addColorStop(1, "rgb(0, 255, 255)"); context.fillStyle = g1; context.fillRect(0, 0, 400, 300); var n = 0; var g2 = context.createRadialGradient(250, 250, 0, 250, 250, 300); g2.addColorStop(0.1, "rgba(255, 0, 0, 0.5)"); g2.addColorStop(0.7, "rgba(255, 255, 0, 0.5)"); g2.addColorStop(1, "rgba(0, 0, 255, 0.5)"); for(var i = 0; i < 10; i++) { context.beginPath(); context.fillStyle = g2; context.arc(i * 25, i * 25, i * 10, 0, Math.PI * 2, true); context.closePath(); context.fill(); } } </script> </head> <body> <canvas></canvas> </body> </html>
注意:该文档使用的文字编码是GB2312,测试时请注意兼容;由于目前支持HTML5的浏览器还不是很多,请各位在查看演示案例的时候使用Firefox10或者Chrome或者Oprea11等高版本浏览器。
下载"通过HTML5提供的Canvas绘制径向渐变图形"