黑马程序员技术交流社区

标题: 【济南校区】前端就业班笔记Canvas(八):渐变和图案 [打印本页]

作者: 小鲁哥哥    时间: 2018-6-15 13:55
标题: 【济南校区】前端就业班笔记Canvas(八):渐变和图案
本帖最后由 小鲁哥哥 于 2018-6-15 14:39 编辑

【济南校区】前端就业班笔记Canvas(八):渐变和图案

绘制图像有两个主要方法, 一个是描边, 一个是填充. 前面介绍过要设置其样式, 可以使用 strokeStyle 和 fillStyle 属性, 只需要给它们提供颜色就可以了. 但是不仅仅是颜色, 它还支持渐变和重复.
相关方法
线性渐变
语法: CanvasRenderingContext2D.createLinearGradient( x0, y0, x1, y1 )
描述:
案例
[JavaScript] 纯文本查看 复制代码
    ...
    var canvasGradient = ctx.createLinearGradient( 0, 25, 200, 25 );
    canvasGradient.addColorStop( 0, 'blue' );
    canvasGradient.addColorStop( 1, 'red' );
    ctx.fillStyle = canvasGradient;

    ctx.fillRect( 0, 100, 200, 50 );
效果
注意: 渐变点的坐标是基于坐标轴来计算的.
放射渐变
语法: CanvasRenderingContext2D.createRadialGradient( x0, y0, r0, x1, y1, r1 )
描述:
案例
[JavaScript] 纯文本查看 复制代码
    var x = cas.width / 2, y = cas.height / 2, r = 100;
    var g = ctx.createRadialGradient( x + r * 2 / 3, y - r * 2 / 3, 0, x + r / 3, y - r / 3, r * 4 / 3 );
    g.addColorStop( 0, '#fff' );
    g.addColorStop( 1, '#f00' );
    ctx.fillStyle = g;
    ctx.arc( x, y, r, 0, 2 * Math.PI );
    ctx.fill();

效果
重复填充
语法: CanvasRenderingContext2D.createPattern( img, repetition )
描述:

准备一张图片
案例
[JavaScript] 纯文本查看 复制代码
    var img = new Image();
    img.src = 'imgs/04d91106ecb1ec84b6708cd9796fc772.jpg';
    img.onload = function () {
        var p = ctx.createPattern( img, 'repeat' );
        ctx.fillStyle = p;
        ctx.fillRect( 50, 50, 550, 350 );
    };
效果
阴影
在 Canvas 中还可以给绘制的内容设置阴影. 但是一般不这么用, 因为性能不高.
相关属性:

如果你想了解更多黑马课程请点击这里,如果你想加入黑马这个大家庭学习先进技术,广交天下好友!
黑马程序员济南中心联系电话:0531-55696830





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2