canvas基础介绍(1)

canvas基础介绍(一)

canvas只支持两种形式的图形绘制:路径矩形

  • 矩形

矩形的绘制方法有三种,这三种方法在绘制之后马上显示在canvas画布上,属于即时生效。

ctx.fillRect(10,20,100,300); //一个填充矩形
ctx.strokeRect(10,50,200,100);//一个矩形边框
ctx.clearRect(40,40,100,100);//清除矩形区域,清除
  • 路径

路径是图形的基本元素。使用路径绘制图形需要额外的步骤:

  • 创建路径起始点
  • 使用画图命令画出路径
  • 路径封闭
  • 对路径区域进行描边或填充来渲染图形

绘制路径主要用到的函数:

  • beginPath() :新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径。
  • closePath() :闭合路径之后图形绘制命令又重新指向到上下文中。
  • stroke() :用线条绘制曲线轮廓。
  • fill():填充内容区域形成实心的图形。

注意: 1. 调用 fill() 函数默认会自动闭合未闭合形状,而 stroke() 函数并不会闭合线条。
2. 一般在 beginPath() 函数执行后或canvas画布刚建的时候,第一条构造路径命令被默认为moveTo() ,来指定初始位置。

下面是几个小例子:

绘制一个描边三角形
  	ctx.save();
    ctx.beginPath();
    ctx.moveTo(20,30);
    ctx.lineTo(50,90);
    ctx.lineTo(45,120);
    ctx.closePath();
    ctx.strokeStyle='red';
    ctx.stroke();
    ctx.restore();
绘制填充三角形
	ctx.save();
    ctx.beginPath();
    ctx.moveTo(120,80);
    ctx.lineTo(200,190);
    ctx.lineTo(300,190);
    ctx.fillStyle='purple';
    ctx.fill();
    ctx.restore();
绘制笑脸
    ctx.save();
    ctx.beginPath();
    ctx.arc(250,200,80,0,Math.PI*2);
    ctx.moveTo(228,180);
    ctx.arc(220,180,8,0,Math.PI*2);
    ctx.moveTo(288,180);
    ctx.arc(280,180,8,0,Math.PI*2);
    ctx.moveTo(200,200);
   	ctx.arc(250,200,50,Math.PI,Math.PI*2,true);//true为逆时针
    ctx.stroke();

图形色彩变化

fillStyle=’ rgba(255,0,0,0.3)’strokeStyle=’#333’ 都支持符合 CSS3 规范的颜色值。

  1. 线条设置样式:
    lineWidth=’ ':设置线条宽度
    lineCap=’ ’ 设置线条末端样式。round、square、butt。默认为butt
    lineJoin=’ ’ 设置线条与线条相交处的样式。round, bevel 和 miter。默认是 miter。
  2. 阴影设置:
    shadowOffsetX=floatshadowOffsetY=float 设置阴影在x和y方向的偏移值。负值表示向上或向左偏移,正值表示向右或向下偏移。
    shadowBlur=float 设置阴影的模糊程度。默认0
    shadowColor=color 支持css3规则的颜色。 设置阴影的颜色。默认是全透明的黑色。
  3. 渐变
    1.创建canvasGradient对象:
    线性渐变createLinearGradient(x1,y1,x2,y2) 表示渐变的起点 (x1,y1) 与终点 (x2,y2)。
    径向渐变createRadialGradient(x1,y1,r1,x2,y2,r2) 前三个定义一个以 (x1,y1) 为原点,半径为 r1 的圆,后三个参数则定义另一个以 (x2,y2) 为原点,半径为 r2 的圆。
    2.用addColorStop上色
    gradient.addColorStop(position,color) position 参数必须是一个 0.0 与 1.0 之间的数值,表示渐变中颜色所在的相对位置。例如,0.5 表示颜色会出现在正中间。color 参数必须是一个有效的 CSS 颜色值(如 #FFF, rgba(0,0,0,1),等等)。

strokeStyle 和 fillStyle 属性都可以接受 canvasGradient 对象。

    ctx.save();
    // 线性渐变
    let linearGradient=ctx.createLinearGradient(20,30,200,300);
    linearGradient.addColorStop(0.2,"rgba(255,0,0,0.5)");
    linearGradient.addColorStop(0.6,'#333');
    linearGradient.addColorStop(0.8,'rgba(0,255,0,0.8)');
    linearGradient.addColorStop(1,'white');
    // 径向渐变
    let radialGradient=ctx.createRadialGradient(20,30,10,200,300,20);
    radialGradient.addColorStop(0.2,"rgba(255,0,0,0.5)");
    radialGradient.addColorStop(0.6,'#333');
    radialGradient.addColorStop(0.8,'rgba(0,255,0,0.8)');
    radialGradient.addColorStop(1,'white');
    ctx.fillStyle=radialGradient;
    ctx.fillRect(20,30,180,270);
    ctx.restore();

猜你喜欢

转载自blog.csdn.net/weixin_42123213/article/details/109700434
今日推荐