1、绘制基础、直线

 <!-- 画布:width/height同时也规定了canvas内里的元素的精度 ,也可以通过js来写canvas.width --><canvas id="canvas" width='1024' height="768" style="border: 1px solid;margin:100px auto;">当前浏览器不支持Canvas,请更换浏览器再试</canvas><script>// 获得canvaslet canvas = document.getElementById('canvas');// 获得context绘图环境let context = canvas.getContext('2d');// 使用context进行绘制基础属性canvas.getContext(),canvas.width,canvas.height// 开始绘制:画轴为右为x正方向,下为y轴正方向context.beginPath(); // 绘制开始context.moveTo(100, 100); // 画笔笔尖移动到,开始点context.lineTo(700, 700); // 画到context.lineTo(100, 700); // 折线context.lineTo(100, 100);  // 跟笔尖相同位置就回是封闭图形context.closePath(); // 绘制结束context.lineWidth = 5; // 线条宽度context.strokeStyle = "#058"; // 样式,可以写csscontext.stroke(); // 绘制线条,stroke笔画的意思,用于绘制线条// 多边形着色context.fillStyle = "pink";context.fill();</script>

注意:
最重点的在于canvas.getContext(‘2d’);
context.stroke(); 是基于状态进行绘制的,如果不进行开始和阻止,绘制状态会一直保留
为避免绘制多个图形时的绘制状态重叠:
context.beginPath(); // 重新规划一个路径
context.closePath(); // 结束当前路径 注意:当绘制不是一段完整的时,closePath会将首尾相连,如果不想首尾相连,只用beginPath来判断就可以
context.moveTo(x,y) 开始点
context.lineTo(x,y); 绘制到的点
context.lineWidth 线条宽度
context.strokeStyle 线条颜色
context.fillStyle 填充色
context.fill();

封装工厂模式:

// 七色板let canvas = document.getElementById('canvas');let context = canvas.getContext('2d');const canArr = [{ 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" },];function draw(data, cxt) {cxt.beginPath();cxt.moveTo(data.p[0].x, data.p[0].y);for (let i = 1; i < data.p.length; i++) {cxt.lineTo(data.p[i].x, data.p[i].y);}cxt.closePath();cxt.fillStyle = data.color;cxt.fill()}for (let j = 0; j < canArr.length; j++) {draw(canArr[j], context);}

绘制弧线:

context.arc( // 6个参数
centerX,centerY,radius, // 圆心坐标,半径值
startingAngle,endingAngle, // 从哪个弧度开始,哪个弧度结束
anticlockwise(false/true) // 可选参数,顺时针还是逆时针,默认false顺时针
);
绘制圆时,绘制的0PI -1.5PI的位置不变,固定为下图,都是从最右侧的0到最下方侧的0.5:

顺时针和逆时针分别绘制:

     let canvas = document.getElementById('canvas');let context = canvas.getContext('2d');for (let i = 0; i < 10; i++) {context.beginPath();context.arc(50 + i * 100, 300, 40, 0, 2 * Math.PI * (i + 1) / 10, false);context.stroke();}context.fillStyle = '#058'for (let i = 0; i < 10; i++) {context.beginPath();context.arc(50 + i * 100, 420, 40, 0, 2 * Math.PI * (i + 1) / 10, true);context.stroke(); // 绘制context.fill();}

canvas基础学习笔记相关推荐

  1. guido正式发布python年份_Python 基础学习笔记.docx

    Python 基础学习笔记 基于<Python语言程序设计基础(第2版)> 第一部分 初识Python语言 第1章 程序设计基本方法 1.1 计算机的概念 计算机是根据指令操作数据的设备, ...

  2. ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步

    http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...

  3. Python3 基础学习笔记 C09【文件和异常】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  4. Python3 基础学习笔记 C08 【类】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  5. Python3 基础学习笔记 C07【函数】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  6. Python3 基础学习笔记 C06【用户输入和 while 循环】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  7. Python3 基础学习笔记 C05【字典】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  8. Python3 基础学习笔记 C04【if 语句】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  9. Python3 基础学习笔记 C03【操作列表】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

  10. Python3 基础学习笔记 C02【列表】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

最新文章

  1. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)
  2. 数据备份 另一服务器_狡兔三窟-数据备份
  3. django安装初步使用命令整理
  4. android中Logcat的TAG过滤
  5. rust 案例_理解Rust的引用与借用
  6. oracle em命令行配置及界面按钮乱码问题解决方法
  7. python循环一百次_python循环
  8. ivar layout 相关知识点
  9. poj 3279 poj 1753
  10. mysql的find in set_mysql中find_in_set()函数的使用及in()用法详解
  11. java定时任务Quartz整理
  12. 身份证号归属地 在线查询服务 api
  13. 工商银行java script error windows7_Win8.1装工行网银提示"called runscript when not marked in progress"的解决方法...
  14. C# winform 选择文件保存路径
  15. rq940服务器 经常自动重启,高端首选 联想ThinkServer RQ940服务器
  16. 关于ElementUI 图标字体无法正常显示异常问题处理
  17. unity 许可证即将到期_了解Unity即将推出。
  18. 爬虫爬取qq看点视频
  19. Omniplan for Mac v3.5.0汉化破解版
  20. EDM营销做的最好的是哪个公司

热门文章

  1. ElasticJob分布式调度,分布式多个微服务执行只需要执行一个定时任务,基本概念介绍(一)
  2. CAD系统与PDM系统集成技术研究
  3. 在Ubuntu中搭建KMS服务器
  4. linux下打印pdf文件很慢,使用adobe Reader PDF 双面打印/ 福晰pdf阅读器打印速度慢
  5. android实现截屏分享,Android截屏、保存、分享
  6. 心理学与生活 - 发展与教育
  7. Vue中的动态加载组件
  8. 最新JCR期刊IF及分区情况(中科院SCI期刊分区表)
  9. gif图片解析与生成(GIF+文字动效)
  10. Android入门之本地音乐播放器