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公共脚本库系列(一): 弹出层脚本
Feb 24 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
Jan 26 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
jquery实现输入框实时输入触发事件代码
Dec 21 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
Apr 03 Javascript
详解webpack4多入口、多页面项目构建案例
May 25 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
vue+element tabs选项卡分页效果
Jun 29 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 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链接MySQL的常用扩展函数
2014/10/23 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
学习ExtJS accordion布局
2009/10/08 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
Python函数的周期性执行实现方法
2016/08/13 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
瑜伽国际:Yoga International
2018/04/18 全球购物
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
事业单位公务员的职业生涯规划
2014/01/15 职场文书
社会实践的活动方案
2014/08/22 职场文书
大学生交通专业求职信
2014/09/01 职场文书
天坛导游词
2015/02/02 职场文书
一文解答什么是MySQL的回表
2022/08/05 MySQL