html代码:

<!DOCTYPE html>
<html><head><title>Sprite sheet</title><style>body {background: #ddd;}#canvas {position: absolute;left: 0;top: 20px;margin: 20px;background: #fff;border: thin inset rgba(100, 150, 230, 0.5);cursor: pointer;}</style></head><body><canvas id="canvas" width="500" height="500">canvas not supported </canvas><script src="cutpaper.js"></script></body>
</html>

js逻辑代码:

var context = document.getElementById('canvas').getContext('2d');// functionsfunction drawGrid(color, stepx, stepy) {context.strokeStyle = color;context.lineWidth = 0.5;for(var i = stepx + 0.5; i< context.canvas.width; i+= stepx) {context.beginPath();context.moveTo(i , 0);context.lineTo(i, context.canvas.height);context.stroke();}for(var i= stepy + 0.5; i<context.canvas.height; i += stepy) {context.beginPath();context.moveTo(0, i);context.lineTo(context.canvas.width, i);context.stroke();}
}function draw() {context.clearRect(0, 0, context.canvas.width, context.canvas.height);drawGrid('lightgray', 10, 10);context.save();context.shadowColor  = 'rgba(200, 200, 0, 0.5)';context.shadowOffsetX = 12;context.shadowOffsetY = 12;context.shadowBlur = 15;drawCutouts();strokeCutoudShapes();context.restore();
}function drawCutouts() {context.beginPath();addCirclePath(); // CWaddOuterRectanglePath();addTrianglePath();context.fill();
}function strokeCutoudShapes() {context.save();context.strokeStyle = 'rgba(0,0,0, 0.7)';context.beginPath();addOuterRectanglePath();context.stroke();context.beginPath();addCirclePath();addRectanglePath();addTrianglePath();context.stroke();context.restore();
}function rect(x, y, w, h, direction) {if(direction) {context.moveTo(x, y);context.lineTo(x, y+h);context.lineTo(x+w, y+h);context.lineTo(x+w, y);context.closePath();} else {context.moveTo(x, y);context.lineTo(x+w, y);context.lineTo(x+w, y+h);context.lineTo(x, y+h);context.closePath();}}function addOuterRectanglePath() {context.rect(110, 25, 370, 335);
}function addCirclePath() {context.arc(300, 300, 40, 0, Math.PI*2, true);
}function addRectanglePath() {rect(310, 55, 70, 35, true);
}function addTrianglePath() {context.moveTo(400, 200);context.lineTo(250, 115);context.lineTo(200, 200);context.closePath();
}// Initialization.....................context.fillStyle = 'goldenrod'
draw();

效果图:

canvas - 基础知识 - 绘制剪纸图形相关推荐

  1. 好程序员分享24个canvas基础知识小结

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  2. 好程序员分享24个canvas基础知识小结 1

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  3. H5:画布Canvas基础知识讲解(三)之文字、阴影、颜色渐变

    上一节介绍了H5:画布Canvas基础知识讲解(二)之插入图像.像素级操作,接下来继续讲解H5:画布Canvas基础. 文字 虽然最近的WebKit版本和Firefox 3.1 nightly bui ...

  4. Canvas基础知识1

    基础内容 <canvas> 标签只有两个属性-- width和height(可选),默认值(width:300px,height:150px); 它们表示画布的实际宽度和高度,绘制的图形都 ...

  5. Canvas基础知识

    Canvas 创建canvas <canvas id="canvas"></canvas> 一般都要存在ID width和height建议直接在<ca ...

  6. 用python基础知识绘制任意格数的棋盘进行五子棋游戏

    绘制任意格数的棋盘进行五子棋游戏 代码显示: # 本程序是为了实现一个任意大小的棋盘def draw_board(t, array):# 绘制出第一行数字for i in range(t):print ...

  7. canvas基础-绘制矩形(1)

    1.canvas基础知识 canvas元素是HTML5中新增的一个重要的元素,专门用来绘制图形,不过canvas本身不具备画图的能力,在页面中放置了canvas元素,就相当于在页面中放置了一块矩形的& ...

  8. Fabricjs在Canvas上使用路径Path绘制不规则图形

    场景 Fabricjs在Canvas上插入照片并设置缩小和翻转属性: Fabricjs在Canvas上插入照片并设置缩小和翻转属性_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面的 ...

  9. 《HTML5 CANVAS基础教程》读书笔记

    一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...

最新文章

  1. Netty原理三:NioEventLoop如何处理客户端连接
  2. python 关闭窗口事件_python在Linux平台下捕获窗体关闭事件
  3. java oracle序列化_Java序列化(Serialization)的理解
  4. Windows Server 2003 来配置网络地址转换 (NAT
  5. 20.高性能MySQL --- 在MySQL上使用 Sphinx
  6. 泾县高级职业中学计算机专业课程,泾县高级职业中学:以人为本 促可持续发展...
  7. Docker入门之安装MySQL
  8. 测试人员必备-adb常用基础命令
  9. 如何快速离职?离职交接工作清单(前端)
  10. python 图片文字化处理_Python图像处理之图片文字识别功能(OCR)
  11. Eureka Client 源码解析
  12. 【老九学堂】【初识C语言】C语言基本数据类型
  13. MT6627处理器芯片资料介绍
  14. java 串行化_Java中的串行化
  15. 20世纪中文电影一百强
  16. 视频教程-微信小程序从入门基础(第一季)-PHP
  17. 小程序学习笔记--进阶之路
  18. 小学计算机合作教学设计,小学信息技术教学设计
  19. Python编程从入门到实践(第二版)课后习题自写代码
  20. 哈尔滨工业大学2022计算机系统大作业

热门文章

  1. 1109: 方块消除 blocks
  2. python(2) 简单字符串
  3. [Python]plt.figure()、plt.subplot() 、plt.subplots()函数
  4. 遮罩层 遮挡不住 flash曲线的解决办法
  5. 新版WIFI小程序分销系统微信源码序WiFi大师版流量主搭建独立源码WiFi分销源码
  6. 在Mavne环境下,实现struts2和hibernate的NVN关系的注解式开发?
  7. 猴子吃桃问题:(非常简单易懂的方法)
  8. linux音频文件格式转换,Linux下常见音频格式之间的转换方法
  9. Android—调用高德地图显示定位蓝点
  10. 图片上传_RuoYi