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 24 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
Oct 17 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
js post提交调用方法
Feb 12 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
Javascrip实现文字跳动特效
Nov 27 Javascript
微信JSAPI Ticket接口签名详解
Jun 28 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
JavaScript前端面试扁平数据转tree与tree数据扁平化
Jun 14 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原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
csdn 批量接受好友邀请
2009/02/19 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
更改Python命令行交互提示符的方法
2015/01/14 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
解决python脚本中error: unrecognized arguments: True错误
2020/04/20 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
大学军训感言800字
2014/02/27 职场文书
法人委托书范本
2014/04/04 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
商场租赁意向书
2014/07/30 职场文书
公司租车协议书
2015/01/29 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书