canvas教程

10h搞定canvas基础系列(canvas零基础入门教程)

字号+ 作者:H5之家 来源:H5之家 2018-03-29 10:10 我要评论( )

canvas学习笔记(上篇) - 10h搞定canvas基础系列(canvas零基础入门教程) - 编程技术 - 跑步客

【上篇】 —建议学习时间4小时 课程共(上中下)三篇

此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例,建议大家学习10~15个小时,里面的案例请挨个敲一遍,这样才能转化为自己的知识。

技术要求:有html/css/js基础。



canvas标签

<canvas>是一个图形容器,让我们在网页中绘制图形,很多人把它称为画布,使用canvas绘制图形就相当于在画布上画画一样,我们可以绘制非常炫酷的页面效果。

如下图这种:

上面的效果当然要后期才有能力编写了,现在我们先从简单的入手

直接看代码

* canvas

我们定义了一个canvas标签(用法和普通标签一样),然后在style中设置了一点样式。


注意:canvas的真实宽高一定要在canvas属性中设置,不能在css中设置,因为canvas默认的宽高是 300*150,如果在css中设置样式,相当于是把画布进行拉伸缩放

呈现效果是这样的:

对于不支持画布的浏览器,我们可以在中间设置替代显示内容

你的浏览器不支持画布

在画布中

绘制方块

代码写到html末尾的<script>标签中

var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.fillStyle = "red"; //设置颜色 ctx.fillRect(50,50, 200, 200); //绘制方块

代码解释:首先要获取canvas的dom,并获取它的2d上下文,然后才能绘制,绘制使用fillRect(x, y, width, height)绘制方块填充,使用fillStyle设置填充的颜色

注:我们所有对画布的操作,都需要先去获取绘图上下文才能操作,也就是 getContext(“2d”)

然后

绘制方块描边

,使用strokeRect(x, y, width, height),使用strokeStyle设置描边颜色

var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.strokeStyle = "red"; ctx.strokeRect(50,50, 200, 200); //绘制边框

如果要清除(擦除)某个区域,使用clearRect(x, y, width, height),

如下,我们绘制了方块,并且清除了绘制的区域,这样就什么都看不到了。

var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.fillStyle = "red"; //设置颜色 ctx.fillRect(50,50, 200, 200); //绘制方块 ctx.clearRect(50,50, 200, 200); //清除范围


注意:这里清除的是方块,如果要清除方块描边的话,需要把范围扩大(因为描边默认是外描边) ctx.clearRect(48,48, 204, 204); //清除范围



绘制路径

使用beginPath()表示开始绘画,使用moveTo(x,y)标记绘制起点,使用 lineTo()进行绘制 ,使用closePath()闭合路径,绘制完成路径之后在使用 stroke()来绘制轮廓

var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); //绘制路径 ctx.beginPath(); ctx.moveTo(100, 100); //通常会使用moveTo()函数设置起点。我们也能够使用moveTo()绘制一些不连续的路径。 ctx.lineTo(200,100); ctx.lineTo(200,200); ctx.moveTo(300, 100); ctx.lineTo(300, 200); ctx.lineTo(400, 200); ctx.closePath();// 闭合路径,会自动闭合路径开始和结束的两个点 ctx.stroke(); //绘制轮廓

显示结果如下:

如果要绘制填充,使用 fill()

var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); //绘制路径 ctx.beginPath(); ctx.moveTo(100, 100); //通常会使用moveTo()函数设置起点。我们也能够使用moveTo()绘制一些不连续的路径。 ctx.lineTo(200,100); ctx.lineTo(200,200); ctx.moveTo(300, 100); ctx.lineTo(300, 200); ctx.lineTo(400, 200); ctx.closePath();// 闭合路径,会自动闭合路径开始和结束的两个点 ctx.fill(); //绘制块 (会自动闭合路径)

绘制填充会自动闭合路径,可以不用使用 closePath()



绘制圆形


使用arc(),具体参数如下

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android canvas用法介绍之save()和restore()

    Android canvas用法介绍之save()和restore()

    2018-03-29 14:05

  • HTML5学习笔记(一)canvas画图

    HTML5学习笔记(一)canvas画图

    2018-03-12 17:01

  • 基于HTML5 Canvas的客户端图表技术研究

    基于HTML5 Canvas的客户端图表技术研究

    2018-03-12 13:08

  • canvas HTML5 新标签 介绍怎么使用 画图作画 WEB(ASP,PHP,...) 2

    canvas HTML5 新标签 介绍怎么使用 画图作画 WEB(ASP,PHP,...) 2

    2018-03-12 09:06

网友点评
c