当前位置:网站首页>canvas学习第一篇
canvas学习第一篇
2022-04-23 06:25:00 【笔描相思】
一:绘制图形
1:绘制一个实心长方形
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect(10, 10, 55, 50);
2:绘制一个矩形的边框
ctx.fillStyle = "rgb(200,0,0)";
ctx.strokeRect(10, 10, 55, 50);
3:清除指定矩形区域,让清除部分完全透明。
clearRect(x, y, width, height)
4:案例
var canvas = document.getElementById("canvas");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
ctx.fillRect(25, 25, 100, 100);
ctx.clearRect(45, 45, 60, 60);
ctx.strokeRect(50, 50, 50, 50);
二:绘制路径
图形的基本元素是路径。路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合。一个路径,甚至一个子路径,都是闭合的。使用路径绘制图形需要一些额外的步骤。
1:首先,你需要创建路径起始点。
2:然后你使用画图命令去画出路径。
3:之后你把路径封闭。
4:一旦路径生成,你就能通过描边或填充路径区域来渲染图形。
以下是所要用到的函数:
1:beginPath()
新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径。
closePath()
2:闭合路径之后图形绘制命令又重新指向到上下文中。
3:stroke()
通过线条来绘制图形轮廓。
4:fill()
通过填充路径的内容区域生成实心的图形。
案例:
ctx.beginPath();
ctx.moveTo(75, 50);
ctx.lineTo(100, 75);
ctx.lineTo(100, 25);
ctx.fill();
移动笔触:
moveTo(x, y)
将笔触移动到指定的坐标x以及y上。
lineTo(x, y)
绘制一条从当前位置到指定x以及y位置的直线。
该方法有两个参数:x以及y ,代表坐标系中直线结束的点。开始点和之前的绘制路径有关,之前路径的结束点就是接下来的开始点,等等。。。开始点也可以通过moveTo()函数改变。
案例:
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
// 填充三角形
ctx.beginPath();
ctx.moveTo(25, 25);
ctx.lineTo(105, 25);
ctx.lineTo(25, 105);
ctx.fill();
// 描边三角形
ctx.beginPath();
ctx.moveTo(125, 125);
ctx.lineTo(125, 45);
ctx.lineTo(45, 125);
ctx.closePath();
ctx.stroke();
}
}
三:绘制圆弧
arc(x, y, radius, startAngle, endAngle, anticlockwise)
画一个以(x,y)为圆心的以radius为半径的圆弧(圆),从startAngle开始到endAngle结束,按照anticlockwise给定的方向(默认为顺时针)来生成。
arcTo(x1, y1, x2, y2, radius)[不常用]
根据给定的控制点和半径画一段圆弧,再以直线连接两个控制点。
案例:
function draw() {
var canvas = document.getElementById('canvas');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
for(var i = 0; i < 4; i++){
for(var j = 0; j < 3; j++){
ctx.beginPath();
var x = 25 + j * 50; // x 坐标值
var y = 25 + i * 50; // y 坐标值
var radius = 20; // 圆弧半径
var startAngle = 0; // 开始点
var endAngle = Math.PI + (Math.PI * j) / 2; // 结束点
var anticlockwise = i % 2 == 0 ? false : true; // 顺时针或逆时针
ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);
if (i>1){
ctx.fill();
} else {
ctx.stroke();
}
}
}
}
}
版权声明
本文为[笔描相思]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_44788119/article/details/124323947
边栏推荐
猜你喜欢
js之节点操作,为什么要学习节点操作
SAP PI/PO rfc2RESTful 发布rfc接口为RESTful示例(Proxy间接法)
SAP Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃。
王者荣耀-unity学习之旅
SAP PI/PO rfc2RESTful 發布rfc接口為RESTful示例(Proxy間接法)
ABAP 实现发布RESTful服务供外部调用示例
h5本地存储数据sessionStorage、localStorage
SAP pi / PO rfc2soap publishes RFC interface as WS example
SAP SALV14 后台输出SALV数据可直接保存文件,发送Email(带排序、超链接、筛选格式)
SAP PI/PO登录使用及基本功能简介
随机推荐
简单易懂的子集dp
SAP PI/PO功能运行状态监控检查
如何判断点是否在多边形内(包含复杂多边形或者多边形数量很多的情况)
公共依赖模块common的处理
常用的DOS命令
积性函数前缀和——杜教筛
[CF 1425D]Danger of Mad Snakes(组合计数+容斥)
7. sub query
[牛客练习赛68]牛牛的粉丝(矩阵快速幂之循环矩阵优化)
判断字符串首尾是否包含目标参数:startsWith()、endsWith()方法
反思 | Android 音视频缓存机制的系统性设计
[Ted series] how does a habit change my life
【TED系列】如何与内心深处的批评家相处?
莫比乌斯反演
SAP RFC_CVI_EI_INBOUND_MAIN BP主数据创建示例(仅演示客户)
SAP SALV14 后台输出SALV数据可直接保存文件,发送Email(带排序、超链接、筛选格式)
11.表和库的管理
NPM installation stepping pit
数据分析入门 | kaggle泰坦尼克任务(三)—>探索数据分析
BTree、B+Tree和HASH索引