zoukankan      html  css  js  c++  java
  • Canvas使用渐变之-线性渐变详解

    在canvas里面,除了使用纯色,我们还能把填充和笔触样式设置为渐变色:线性渐变和径向渐变。

    线性渐变 createLinearGradient(x0,y0,x1,y1)  返回 CanvasGradient

    四个参数分别是渐变色起始坐标x,起始坐标y,结束坐标x,结束坐标y。

    渐变色沿着两点之间的一条线来进行渐变。

    径向渐变 createRadialGradient(x0,y0,r0,x1,y1,r1) 返回CanvasGradient

    六个参数分别是 

            起点圆心坐标(x0,y0)

            起点圆心半径(r0)

            终点圆心坐标(x1,y1)

            终点圆心​半径(r1)

    这两种渐变方法都会返回一个 CanvasGradient对象,这个对象定义了addColorStop(position,color)的方法。

    addColorStop() 给渐变的梯度线添加一种纯色,  返回​void。

    举例

    1 var ctx = document.querySelector('canvas').getContext('2d');
    2 
    3 var grad = ctx.​​createLinearGradient(0,0,500,500);
    4 
    5 grad.addColorStop(0,'green');
    6 
    7 grad.addColorStop(0.5,'yellow');
    8 
    9 grad.addColorStop(1,'blue');

    注意,此时在画布上已经创建了一个矩形渐变范围,坐标是 0,0,500,500;

    但并没有显示出来,此时需要我们再绘出一个别的形状--以​矩形为例。

    来选择我们要显示的渐变范围,这个重新绘出的矩形需要取grad的样式。

    1 ctx.fillStyle = grad; 
    2 ctx.fillRect(x,y,w,h);

    此时,也就是说我们接下来要画的矩形,使用了我们刚才创建的渐变色。

    不难想象,我们预先配置好的渐变范围其实就是一个长宽各500的矩形,渐变方向

    是从左上角到右下角。

    但是,我们要把这个新绘制矩形的放在哪呢?

    我们可以把我们配置好的500*500的渐变范围当一块地,上面被土掩盖了,下面​是各种果实。你想看哪块的果实,你就把这个新矩形画在哪里。

    你可以也画一个0,0,500,500的矩形,直接把整块地翻起来。​

    你也可以画一个0,0,50,50的​矩形,只能看到左上角的绿色green,因为他渐变到yellow,或许是从50之后才开始的。

    你也可以画一个450,450,50,50的矩形,那么你看到的将是右下角的blue。​

  • 相关阅读:
    [BZOJ2212][POI2011]Tree Rotations(线段树合并)
    [BZOJ3569]DZY Loves Chinese II(随机化+线性基)
    [BZOJ3237][AHOI2013]连通图(分治并查集)
    [BZOJ4945][NOI2017]游戏(2-SAT)
    [BZOJ4568][SCOI2016]幸运数字(倍增LCA,点分治+线性基)
    [BZOJ2460][BJOI2011]元素(线性基)
    [BZOJ4942][NOI2017]整数(线段树+压位)
    [P2023][AHOI2009]维护序列(线段树)
    [HDU4336]Card Collector(min-max容斥,最值反演)
    [COGS2426][HZOI 2016]几何
  • 原文地址:https://www.cnblogs.com/webhb/p/5614043.html
Copyright © 2011-2022 走看看