canvas基础学习笔记
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基础学习笔记相关推荐
- guido正式发布python年份_Python 基础学习笔记.docx
Python 基础学习笔记 基于<Python语言程序设计基础(第2版)> 第一部分 初识Python语言 第1章 程序设计基本方法 1.1 计算机的概念 计算机是根据指令操作数据的设备, ...
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...
- Python3 基础学习笔记 C09【文件和异常】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Python3 基础学习笔记 C08 【类】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Python3 基础学习笔记 C07【函数】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Python3 基础学习笔记 C06【用户输入和 while 循环】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Python3 基础学习笔记 C05【字典】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Python3 基础学习笔记 C04【if 语句】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Python3 基础学习笔记 C03【操作列表】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Python3 基础学习笔记 C02【列表】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
最新文章
- 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)
- 数据备份 另一服务器_狡兔三窟-数据备份
- django安装初步使用命令整理
- android中Logcat的TAG过滤
- rust 案例_理解Rust的引用与借用
- oracle em命令行配置及界面按钮乱码问题解决方法
- python循环一百次_python循环
- ivar layout 相关知识点
- poj 3279 poj 1753
- mysql的find in set_mysql中find_in_set()函数的使用及in()用法详解
- java定时任务Quartz整理
- 身份证号归属地 在线查询服务 api
- 工商银行java script error windows7_Win8.1装工行网银提示"called runscript when not marked in progress"的解决方法...
- C# winform 选择文件保存路径
- rq940服务器 经常自动重启,高端首选 联想ThinkServer RQ940服务器
- 关于ElementUI 图标字体无法正常显示异常问题处理
- unity 许可证即将到期_了解Unity即将推出。
- 爬虫爬取qq看点视频
- Omniplan for Mac v3.5.0汉化破解版
- EDM营销做的最好的是哪个公司