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 相关文章推荐
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
Jan 04 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
Oct 19 Javascript
JS设计模式之单例模式(一)
Sep 29 Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 Javascript
JavaScript数组去重算法实例小结
May 07 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
Jun 18 jQuery
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
vue实现页面切换滑动效果
Jun 29 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之数据库操作详解及乱码解决!
2007/01/02 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
Python简单计算文件夹大小的方法
2015/07/14 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
python 统计代码行数简单实例
2017/05/04 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
WxPython实现无边框界面
2019/11/18 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
应聘自荐信
2013/12/14 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
企业文明单位申报材料
2014/05/16 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
责任书范本
2014/08/25 职场文书
交通事故协议书范文
2014/10/23 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android