canvas简介
- canvas标签是用来绘制图像的
- canvas本身没有绘画的能力,仅仅是图形的容器,相当于一块画板
- 必须要使用脚本完成绘制:JS
canvas绘画
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#canvas{
border: 1px solid black;}
</style>
</head>
<body>
<!-- 1、定义画板 -->
<canvas id="canvas" width="400" height="300"></canvas>
<script>
// 2、获取画板
var canvas = document.getElementById("canvas");
///3、铺上画纸或画布,获取绘画环境
var cv = canvas.getContext("2d");
// 4、开启一条路径或重置当前路径,相当于抬笔,表示准备开始画
cv.beginPath();
// 5、指定路径(画笔)起点: 画布.moveTo(X坐标,Y坐标);
cv.moveTo(50, 50);
// 6、指定路径(画笔)到达位置: 画布.lineTo(X坐标,Y坐标);
cv.lineTo(350, 50);
// 7、绘制当前路径(画笔),默认为黑色
cv.stroke();
</script>
</body>
</html>
画笔宽度和颜色
canvas.lineWidth = 数值;
:定义画笔宽度(粗细),值为数值类型,单位为像素canvas.strokeStyle = “颜色值”
:定义画笔(路径)颜色
多个到达点及开启多条路径
canvas.lineTo(X坐标, Y坐标);
:定义一个新到达点,然后从上一个点到该点画一条线条canvas.beginPath();
:开启一条路径,或重置当前路径;相当于抬笔
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#canvas{
border: 1px solid black;}
</style>
</head>
<body>
<!-- 1、定义画板 -->
<canvas id="canvas" width="400" height="300"></canvas>
<script>
var canvas = document.getElementById("canvas");
var cv = canvas.getContext("2d");
cv.beginPath();
cv.lineWidth = 10;
cv.strokeStyle = "red";
cv.moveTo(20, 20);
cv.lineTo(200, 100);
cv.lineTo(380, 20);
cv.stroke();
// ------------------------------------------
// 开始新的路径
cv.beginPath();
cv.lineWidth = 20;
cv.strokeStyle = "green";
cv.moveTo(20, 170);
cv.lineTo(200, 250);
cv.lineTo(380, 170);
cv.stroke();
</script>
</body>
</html>
闭合路径和填充路径
canvas.closePath();
:闭合路径,从当前点到开始点的路径canvas.fillStyle = “颜色值”;
:定义填充颜色canvas.fill();
:填充当前路径,默认为黑色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#canvas{
border: 1px solid black;}
</style>
</head>
<body>
<!-- 1、定义画板 -->
<canvas id="canvas" width="400" height="300"></canvas>
<script>
var canvas = document.getElementById("canvas");
var cv = canvas.getContext("2d");
cv.beginPath();
cv.lineWidth = 10;
cv.strokeStyle = "red";
cv.moveTo(20, 20);
cv.lineTo(200, 100);
cv.lineTo(380, 20);
// 不能指定路径到达起点来关闭路径,不是正常的关闭路径
// cv.lineTo(20, 20);
// 创建闭合路径:从当前点到开始点的路径
cv.closePath();
// 绘制当前路径
cv.stroke();
// 定义填充颜色
cv.fillStyle = "orange";
// 填充当前路径,默认为黑色
cv.fill();
</script>
</body>
</html>
绘制贝塞尔曲线
canvas.quadraticCurveto(cpx, cpy, x, y);
:二次贝塞尔曲线,只有一个控制点canvas.bezierCurveto(cpx1, cpy1, cpx2, cpy2, x, y);
:三次贝塞尔曲线,有两个控制点- cpx,cpy:控制点
- x,y:到达点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#canvas{
border: 1px solid black;}
</style>
</head>
<body>
<!-- 1、定义画板 -->
<canvas id="canvas" width="400" height="300"></canvas>
<script>
var canvas = document.getElementById("canvas");
var cv = canvas.getContext(