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 相关文章推荐
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 Javascript
prototype 学习笔记整理
Jul 17 Javascript
小议javascript 设计模式 推荐
Oct 28 Javascript
javascript使用eval或者new Function进行语法检查
Oct 16 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
JS实现从网页顶部掉下弹出层效果的方法
Aug 06 Javascript
JavaScript实现多种排序算法
Feb 24 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
微信小程序 wx.request方法的异步封装实例详解
May 18 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
vue实现移动端悬浮窗效果
Dec 01 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
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
python numpy元素的区间查找方法
2018/11/14 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
《月球之谜》教学反思
2014/04/10 职场文书
拔河比赛口号
2014/06/10 职场文书
创先争优标语
2014/06/27 职场文书
承诺书范本
2015/01/21 职场文书