canvas绘制七巧板


Posted in Javascript onFebruary 03, 2017

效果如下所示:

canvas绘制七巧板

代码分享:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Canvas七巧板</title>
</head>
<body>
  <canvas id="canvas" style=" border: 1px solid #aaa;display:block;margin:50px auto;"></canvas>
  <script type="text/javascript">
    var tangram = [
      {p:[{x:0,y:0},{x:800,y:0},{x:400,y:400}],color:'#caff67'},
      {p:[{x:0,y:0},{x:400,y:400},{x:0,y:800}],color:'#67becf'},
      {p:[{x:800,y:0},{x:800,y:400},{x:600,y:600},{x:600,y:200}],color:'#ef3d61'},
      {p:[{x:600,y:200},{x:600,y:600},{x:400,y:400}],color:'#f9f51a'},
      {p:[{x:400,y:400},{x:600,y:600},{x:400,y:800},{x:200,y:600}],color:'#a594c0'},
      {p:[{x:200,y:600},{x:400,y:800},{x:0,y:800}],color:'#fa8ecc'},
      {p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:'#f6ca29'}
    ]
//    定义一个存放绘制路径和颜色的数组
    window.onload=function (){
      var canvas=document.getElementById('canvas');
//      获取canvas
      canvas.width = 800;
      canvas.height = 800;
//      定义画布的宽高
      var context=canvas.getContext('2d');
//      创建画布
      for( var i=0; i<tangram.length; i++){
        draw(tangram[i],context);
//        遍历数组tangram执行函数draw

      }
//      draw这个函数
     function draw(piece,cxt){
        cxt.beginPath();
//        开始路径的创建
        cxt.moveTo( piece.p[0].x , piece.p[0].y );
//        从这个坐标开始
        for( var i=1; i<piece.p.length; i++)
//          遍历数组中的p属性
          cxt.lineTo(piece.p[i].x , piece.p[i].y);
//        画路径到这个坐标
          cxt.closePath();
//          关闭这条打开的路径

          cxt.fillStyle = piece.color;
          cxt.fill();
//          给绘制的形状填充颜色
     }
    }
  </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
用javascript实现的激活输入框后隐藏初始内容
Jun 29 Javascript
在IE下获取object(ActiveX)的Param的代码
Sep 15 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
Tab切换组件(选项卡功能)实例代码
Nov 21 Javascript
jquery中ajax使用error调试错误的方法
Feb 08 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
Nov 30 Javascript
JQuery.validate在ie8下不支持的快速解决方法
May 18 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
Aug 11 Javascript
vue实现在表格里,取每行的id的方法
Mar 09 Javascript
vue如何通过id从列表页跳转到对应的详情页
May 01 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
May 10 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
JS对象是否拥有某属性如何判断
Feb 03 #Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 #Javascript
JavaScript中捕获与冒泡详解及实例
Feb 03 #Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 #Javascript
几种tab切换详解
Feb 03 #Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 #Javascript
拖动时防止选中
Feb 03 #Javascript
You might like
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php生成随机密码的三种方法小结
2010/09/04 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
Vue表单实例代码
2016/09/05 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
python实现简单socket通信的方法
2016/04/19 Python
20行python代码实现人脸识别
2019/05/05 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
高中生自我评语大全
2014/01/19 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
地理科学专业自荐信
2014/09/01 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
单位更名证明
2015/06/18 职场文书
远程教育学习心得体会
2016/01/23 职场文书
Python实现自动玩连连看的脚本分享
2022/04/04 Python
Redis实现一个账号只能登录一个设备
2022/04/19 Redis
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python