html绘制图形的关键三步,HTML5 绘制图形【三】

HTML5 绘制图形【3】

绘制渐变图形

渐变是指在填充时从一种颜色慢慢过渡到另外一种颜色。

绘制线性渐变

绘制线性渐变时,需要使用到LinearGradient对象。使用图形上下文对象的createLinearGradient()方法创建该对象。该方法的定义如下:

context.createLinearGradient(xStart, yStart, xEnd, yEnd);

该方法有四个参数,前两个参数指定渐变起始点的横坐标和纵坐标,后两个参数指定渐变终点的横坐标和纵坐标。通过使用该方法,创建了一个使用两个坐标点的LinearGradient对象。然后使用addColorStop()方法进行设定,该方法的定义如下:

linearGradient.addColorStop(offset, color);

使用这个方法可以追加渐变的颜色。该方法使用两个参数:offset为所设定的颜色离开渐变起点的偏移量,该参数的值是一个范围在0到1之间的浮点值,渐变起始点的偏移量为0,渐变结束点的偏移量为1;color为绘制时使用的颜色。

因为是渐变,所以至少需要使用两次addColorStop()方法以追加两个颜色(开始颜色与结束颜色),可以追加多个颜色。

接着把fillStyle设定为LinearGradient对象,然后执行填充的方法,就可以绘制出渐变图形了。

Canvas.prototype.createLinearGradient = function(xStart, yStart, xEnd, yEnd) {

return this.context.createLinearGradient(xStart, yStart, xEnd, yEnd);

};

Canvas.prototype.createRadialGradient = function(xStart, yStart, radiusStart, xEnd, yEnd, radiusEnd) {

return this.context.createRadialGradient(xStart, yStart, radiusStart, xEnd, yEnd, radiusEnd);

};

$(function() {

var canvas = new Canvas("draw");

var g1 = canvas.createLinearGradient(0, 0, 0, 400);

g1.addColorStop(0, 'rgb(255, 255, 0)');

g1.addColorStop(1, 'rgb(0, 255, 255)');

canvas.fillStyle(g1).fillRect(0, 0, 400, 400);

var g2 = canvas.createLinearGradient(0, 0, 400, 0);

g2.addColorStop(0, 'rgba(0, 0, 255, 0.5)');

g2.addColorStop(1, 'rgba(255, 0, 0, 0.5)');

var xy, r;

for(var i = 0; i < 10; i++) {

xy = i * 25;

r = i * 10;

canvas.beginPath().fillStyle(g2).arc(xy, xy, r, 0, 2 * Math.PI, true).closePath().fill();

}

});

绘制径向渐变

径向渐变是指沿着圆形的半径方向向外进行扩散的渐变方式。例如,在描绘太阳时,沿着太阳的半径方向向外扩散出去的光晕,就是一种径向渐变。使用图形上下文对象的createRadialGradient()方法绘制径向渐变,该方法的定义如下:

context.createRadialGradient(xStart, yStart, radiusStart, xEnd, yEnd, radiusEnd);

该方法使用六个参数,前三个参数为渐变开始圆的圆心坐标和半径,后三个参数为渐变结束圆的圆心坐标和半径。在这个方法中,分别指定了两个圆的大小与位置。从第一个圆的圆心处向外进行扩散渐变,一直扩散到第二个圆的外轮廓处。在设定颜色时,与纯属渐变相同,使用addColorStop()方法进行设定即可。同样也需要设定0到1之间的浮点数来作为渐变转折点的偏移量。使用示例如下:

$(function() {

var canvas = new Canvas("draw");

var g1 = canvas.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)');

canvas.fillStyle(g1).fillRect(0, 0, 400, 400);

var g2 = canvas.createLinearGradient(250, 250, 0, 250, 250, 400);

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)');

var xy, r;

for(var i = 0; i < 10; i++) {

xy = i * 25;

r = i * 10;

canvas.beginPath().fillStyle(g2).arc(xy, xy, r, 0, 2 * Math.PI, true).closePath().fill();

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值