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 相关文章推荐
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
Mar 29 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
js绘制圆形和矩形的方法
Aug 05 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
Nov 17 Javascript
javascript html5实现表单验证
Mar 01 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
js实现倒计时效果(小于10补零)
Mar 08 Javascript
深入学习JavaScript 高阶函数
Jun 11 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 Javascript
js实现星星打分效果
Jul 05 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_data_seek]
2012/11/01 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
php生成RSS订阅的方法
2015/02/13 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
在webstorm中配置less的方法详解
2020/09/25 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
python如何统计代码运行的时长
2019/07/24 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
领导班子对照检查材料
2014/09/22 职场文书
护士医德医风心得体会
2016/01/25 职场文书