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 相关文章推荐
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
Jan 21 Javascript
easyui validatebox验证
Apr 29 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
Apr 12 Javascript
Vue中封装input组件的实例详解
Oct 17 Javascript
解决bootstrap模态框数据缓存的问题方法
Aug 10 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
layui实现显示数据表格、搜索和修改功能示例
Jun 03 Javascript
vue实现公共方法抽离
Jul 31 Javascript
jQuery实现本地存储
Dec 22 jQuery
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
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之第八天
2006/10/09 PHP
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
PHP反射API示例分享
2016/10/08 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
Python不规范的日期字符串处理类
2014/06/10 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
使用python为mysql实现restful接口
2018/01/05 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
高三家长寄语
2014/04/03 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
党员志愿者活动方案
2014/08/28 职场文书
先进工作者申报材料
2014/12/23 职场文书
服务承诺书
2015/01/19 职场文书
给老师的一封感谢信
2015/01/20 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript