Canvas样式讨论之fillStyle

10 篇文章 1 订阅

Canvas样式讨论之fillStyle

fillStyle的赋值除了可以是color之外,还有可以有gradient、canvas 、img、video:

gradient

gradient分为线性渐变和径向渐变两种:

  1. 线性渐变(Linear Gradient)
    线性渐变是定义在两点之间,定义线性渐变主要有两个步骤:
    Step1
    var grd = context.createLinearGradient( xstart ,ystart ,xend ,yend );
    传入两个坐标值构成一个线段,这个线段就是所谓的渐变线,渐变线用于定义渐变的方向和尺度。
    Step2
    grd.addColorStop ( stop ,color );
    每个ColorStop是渐变线上的关键色,其中stop是一个浮点值,决定了关键色的位置,color决定了关键色的颜色。addColorStop()可添加多个,stop值在0.0-1.0之间,最小值取0表示起始的位置,最大值取1表示终点的位置。
    当完成以上两步,这个grd就可以作为fillStyle传入状态属性里。
        var linearGrad = context.createLinearGradient(0,0,800,800);
        linearGrad.addColorStop(0.0,"#fff");
        linearGrad.addColorStop(0.25,"yellow");
        linearGrad.addColorStop(0.5,"green");
        linearGrad.addColorStop(0.75,"blue");
        linearGrad.addColorStop(1.0,"#000");
        context.fillStyle = linearGrad;
        context.fillRect(0,0,800,800);

2.径向渐变(Radial Gradient)
径向渐变指放射状渐变,是定义在两个同心圆的基础上的。定义径向渐变主要有两个步骤:
Step1
var grd = context.createRadialGradient ( x0 ,y0 ,r0 ,x1 ,y1 ,r1 ) ;
createRadialGradient()定义了两个圆环,前三个参数定义了第一个圆的原点坐标和半径,后三个参数定义了第二个圆的原点坐标和半径
Step2
grd.addColorStop ( stop ,color );

        var linearGrad = context.createRadialGradient(400,400,10,400,400,600);
        linearGrad.addColorStop(0.0,"#fff");
        ....
        linearGrad.addColorStop(1.0,"#000");
        context.fillStyle = linearGrad;
        context.fillRect(0,0,800,800);

使用图片、画布或者video

createPattern ( img ,repeat-style )
第一个参数除了可以是img外,还可以是canvas(将画布作为填充)或者video
第二个参数是重复样式,repeat-style可以去找四种值:no-repeat、repeat-x、repeat-y、repeat
使用图片:

        var img = new Image();
        img.src = "back.jpg";

        img.onload = function() {
            var pattern = context.createPattern(img,"repeat");
            context.fillStyle = pattern;
            context.fillRect(0,0,800,800);
        }

使用画布:
首先指定使用画布来填充canvas

        var backCanvas = createBackgroundCanvas();
        var pattern = context.createPattern(backCanvas,"repeat");
        context.fillStyle = pattern;
        context.fillRect(0,0,800,800);

createBackgroundCanvas()函数用于创建一个填充的画布

    function createBackgroundCanvas() {
        var backCanvas = document.createElement("canvas");
        backCanvas.width = 100;
        backCanvas.height = 100;
        var backCanvasContext = backCanvas.getContext("2d");
        drawStar(backCanvasContext,50,50,50,0);
        return backCanvas;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值