感谢  liuyubobobo 老师 ,提供了这么好的课程

1、<canvas><canvas>标签

    注意:最好在标签中指定canvas的width 和 height 或者用js : canvas.width , canvas.height
    <canvas>如果你的浏览器支持canvas,那么你将看不到这行文字</canvas>
    注意:canvas是基于状态来绘制的。
2、画一条直线:
  1. var canvas = document.getElementById("line"); //获取画布节点
  2. canvas.width =1366; //设置画布的宽
  3. canvas.height =600; //设置画布的高
  4. if(canvas.getContext){
  5. var ctx = line.getContext("2d");
  6. ctx.moveTo(100,100); //移动到位置(100,100)
  7. ctx.lineTo(500,500); //从位置(100.100)画线到 位置 (500,500)
  8. ctx.lineTo(100,500); //从位置(500,500)画线到 位置 (100,500)
  9. ctx.lineTo(100,100);
  10. ctx.stroke();
  11. }
效果图:
 
修改之前的代码如下:

  1. var canvas = document.getElementById("line");
  2. canvas.width =1366;
  3. canvas.height =600;
  4. if(canvas.getContext){
  5.   var ctx = line.getContext("2d");
  6.   ctx.beginPath();// 开始一段新的画
  7.   ctx.moveTo(100,100);
  8.   ctx.lineTo(500,500);
  9.   ctx.lineTo(100,500);
  10. 10   ctx.lineTo(100,100);
  11. 11   ctx.fillStyle ="#6699cc"; //设置填充颜色
  12.   ctx.fill(); //执行填充操作
  13.   ctx.lineWidth =5; //设置线宽
  14.   ctx.strokeStyle ="rgba(0,255,0,.5)"; //设置画线的颜色
  15.   ctx.stroke(); //画线(会基于之前设置的三个 lineTo的坐标位置而依次画图)
  16. ctx.closePath(); //结束这段画
  17. }
效果如下:
 
 
熟练之后可以用下面这段代码画出一个美丽的七巧板:
  1. var tangram =[
  2.   {p:[{x:100,y:100},{x:300,y:300},{x:500,y:100}],color:'#CAFF67'},
  3.   {p:[{x:100,y:100},{x:300,y:300},{x:100,y:500}],color:'#6699CC'},
  4.   {p:[{x:100,y:500},{x:200,y:400},{x:300,y:500}],color:"pink"},
  5.   {p:[{x:200,y:400},{x:300,y:300},{x:400,y:400},{x:300,y:500}],color:'purple'},
  6.   {p:[{x:300,y:300},{x:400,y:200},{x:400,y:400}],color:'yellow'},
  7.   {p:[{x:400,y:200},{x:500,y:100},{x:500,y:300},{x:400,y:400}],color:'red'},
  8.   {p:[{x:300,y:500},{x:500,y:300},{x:500,y:500}],color:'orange'}
  9. ]
  10. window.onload =function(){
  11.   var canvas = document.getElementById("line"),
  12.   i =0;
  13.   canvas.width =1366;
  14.   canvas.height =600;
  15.   if(canvas.getContext){
  16.     var context = canvas.getContext("2d");
  17.     for(i =0;i<tangram.length;i++){
  18.       draw(tangram[i],context)
  19.     }
  20.   }
  21. }
  22. function draw(piece,cxt){
  23.   cxt.beginPath();
  24.   cxt.moveTo(piece.p[0].x,piece.p[0].y);
  25.   var i =1;
  26.   for(;i < piece.p.length;i++){
  27.     cxt.lineTo(piece.p[i].x,piece.p[i].y);
  28.   }
  29.   cxt.closePath();
  30.   cxt.fillStyle=piece.color;
  31.   cxt.fill();
  32.   cxt.fillStyle ="#000000";
  33.   cxt.lineWidth =3;
  34.   cxt.stroke();
  35. }
效果图:
 
 
另外我这里还做了一个Demo,当你输入自己的英文名时,你可以看到圆球跳跃的效果显示你的英文名,由于篇幅,不详说,
效果图:
具体的代码见github: 
 
 

Canvas学习的更多相关文章

  1. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  2. canvas学习(一)

    Canvas 学习之路 (一) canvas 是H5 里面神一样的东西,使得只是通过html和js就能做出非常棒的游戏和画面. 因为对前端无限的爱好,更加对canvas充满好奇,将我学习canvas的 ...

  3. canvas学习和面向对象(二)

    Canvas 学习(二) 上一篇Canvas 学习(一)中我是用canvas绘制了一些基本和组合的图形. 现在开始绘制图片和动画帧,以及面向对象的升级版本. 还是一样,看代码,所有的代码都托管在git ...

  4. canvas学习总结六:绘制矩形

    在第三章中(canvas学习总结三:绘制路径-线段)我们提高Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的. 立即绘制图形方法仅有两个strokeRect(),fillRec ...

  5. canvas学习笔记、小函数整理

    http://bbs.csdn.net/topics/391493648 canvas实例分享 2016-3-16 http://bbs.csdn.net/topics/390582151 html5 ...

  6. canvas学习(三):文字渲染

    一.绘制基本的文字: var canvas = document.getElementById("myCanvas") var ctx = canvas.getContext('2 ...

  7. canvas学习(二):渐变与曲线的绘制

    canvas学习(二):渐变与曲线的绘制 一:createLinearGradient()线性渐变: 二:createLinearGradient() 放射状/圆形渐变: 三:createPatter ...

  8. canvas学习(一):线条,图像变换和状态保存

    canvas学习(一):线条,图像变换和状态保存 一:绘制一条线段: var canvas = document.getElementById('canvas') var ctx = canvas.g ...

  9. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习   从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方 ...

  10. canvas学习之API整理笔记(一)

    其实canvas本身很简单,就是去学习它的API,多看实例,多自己动手练习,多总结.但是canvas的API实在是有点多,对于初学者来说,可能学到一半就止步不前了.我也有这种感觉,在学习的过程中,编写 ...

随机推荐

  1. Unity3D中自带事件函数的执行顺序(转)

    原文:http://www.jianshu.com/p/1d93ece664e2 在Unity3D脚本中,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行.其执行顺序如下: 编辑器(E ...

  2. Cocos2dx 多点触控

    1 最容易忽略的东西,对于ios平台,须得设置glView的属性: [__glView setMultipleTouchEnabled:YES]; 2 如果调用CCLayer的方法setTouchEn ...

  3. bootstrap全局CSS样式学习

    参考http://v3.bootcss.com/css/,根据自己的记忆进行的复述,加深记忆. 首先介绍bootstrap全局CSS样式 只通过使用bootstrap.css,即可获得统一的样式设置. ...

  4. [daily][device] linux添加打印机

    只用过HP的打印机,用过两个,分别是:HP_p2055dn, 和 HP_LaserJet_Professional_M1216nfh  别的不知道.以下内容仅试用于HP打印机. 第一:装HP,打印机工 ...

  5. Bootstrap《第一篇》,关于container、jumbotron、row、col、text-center等的学习

    一.关于引入bootstrap文件 <!-- 为了确保适当的绘制和触屏缩放,需要在 <head> 之中添加 viewport 元数据标签. --> <meta name= ...

  6. Ajaxupload.js上传插件使用

    注意一下火狐,360IE78下的坑: 返回过来的response在不同浏览器下的字符串不一致 // response(chrome):<pre style="word-wrap: br ...

  7. dom4j微信接口开发

    新建一个web项目,我用的是eclipse和tomcat7.0 ,外网环境用的nat123 先建立一个实体bean:TextMessage /** * xml基本对象 * @author xiaohu ...

  8. iOS一些系统事件的生命周期

    1.- (void)applicationWillResignActive:(UIApplication *)application 说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息 ...

  9. iOS UITableView 移除单元格选中时的高亮状态

    在处理UITableView表格时,我们希望用户能够和触摸单元格式进行交互,但是希望用户在完成交互之后,这些单元格的选中状态能够消失,.Cocoa Touch 提供了两种方法来防止单元格背持久选中. ...

  10. 时光煮雨 Unity3D实现2D人物动画② Unity2D 动画系统&资源效率

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...