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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
JavaScript 实现模态对话框 源代码大全
May 02 Javascript
JS window.opener返回父页面的应用
Oct 24 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
jQuery 操作input中radio的技巧
Jul 18 Javascript
jQuery中ScrollTo用法示例
Sep 04 Javascript
基于vue2.x的电商图片放大镜插件的使用
Jan 22 Javascript
浅谈Angular6的服务和依赖注入
Jun 27 Javascript
Vue resource三种请求格式和万能测试地址
Sep 26 Javascript
angular6 填坑之sdk的方法
Dec 27 Javascript
Vue项目中使用WebUploader实现文件上传的方法
Jul 21 Javascript
javascript实现点击星星小游戏
Dec 24 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
咖啡常见的种类
2021/03/03 新手入门
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
Python中存取文件的4种不同操作
2018/07/02 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
3种python调用其他脚本的方法
2020/01/06 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
学院领导推荐信
2013/10/30 职场文书
商务英语求职自荐信范文
2013/12/24 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
农村党员对照检查材料
2014/09/24 职场文书
2014年督导工作总结
2014/11/19 职场文书
公司地址变更通知
2015/04/25 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技