canvas绘制七巧板

发布时间 - 2026-01-10 22:50:16    点击率:

效果如下所示:

代码分享:

<!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>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# canvas  # 绘制  # 七巧板  # canvas七巧板  # Canvas实现动态的雪花效果  # canvas实现钟表效果  # canvas实现探照灯效果  # canvas实现图像截取功能  # canvas实现动态小球重叠效果  # canvas实现图像放大镜  # canvas实现粒子时钟效果  # canvas的神奇用法  # js Canvas绘制圆形时钟教程  # canvas实现十二星座星空图  # 遍历  # 这条  # 所示  # 组中  # body  # border  # id  # title  # UTF 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  开心动漫网站制作软件下载,十分开心动画为何停播?  JavaScript如何实现错误处理_try...catch如何捕获异常?  Laravel如何配置Horizon来管理队列?(安装和使用)  python中快速进行多个字符替换的方法小结  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Python并发异常传播_错误处理解析【教程】  5种Android数据存储方式汇总  zabbix利用python脚本发送报警邮件的方法  七夕网站制作视频,七夕大促活动怎么报名?  如何在阿里云完成域名注册与建站?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  java获取注册ip实例  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  如何用PHP工具快速搭建高效网站?  如何在腾讯云服务器上快速搭建个人网站?  如何用西部建站助手快速创建专业网站?  实例解析Array和String方法  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何处理和验证JSON类型的数据库字段  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  网站制作报价单模板图片,小松挖机官方网站报价?  如何快速搭建安全的FTP站点?  javascript读取文本节点方法小结  JavaScript常见的五种数组去重的方式  如何快速搭建高效WAP手机网站吸引移动用户?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  高端网站建设与定制开发一站式解决方案 中企动力  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Android okhttputils现在进度显示实例代码  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  潮流网站制作头像软件下载,适合母子的网名有哪些?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Bootstrap整体框架之JavaScript插件架构  如何快速使用云服务器搭建个人网站?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  三星网站视频制作教程下载,三星w23网页如何全屏?