一.canvas
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.can{
border: 1px solid red;
}
</style>
</head>
<body>
<!-- 画布具有默认宽高 -->
<canvas class="can" width="800" height="800">
您当前浏览器不支持canvas 请升级浏览器版本吧
</canvas>
</body>
</html>
二.绘制直线
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector('#can');
// 2.获取画笔
var myCan = canvas.getContext('2d');
console.log(myCan);
// 3.定义一个起点 (绘制一个起点)
// moveTo(x,y); 用来绘制起点
myCan.moveTo(200, 200);
// 4.绘制直线
// lineTo(x,y); 直线的起点就是上一步设置 moveTo的x,y坐标
myCan.lineTo(600, 600);
// 5.填充图形
myCan.stroke();
</script>
</body>
</html>
三.画笔的颜色和粗细
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
console.log(myCan);
// 3.定义一个起点(绘制一个起点)
// moveTo(x,y) 用来绘制起点
myCan.moveTo(200, 200);
// 4.绘制直线
// lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标
myCan.lineTo(600, 600);
// 画笔的颜色和粗细要在填充之前修改
myCan.strokeStyle = "orange";
myCan.lineWidth = 10;
myCan.moveTo(600,600);
myCan.lineTo(600, 200);
// 5.填充图形
myCan.stroke();
</script>
</body>
</html>
四.绘制矩形
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
console.log(myCan);
// 路径的开始
// 开始路径
myCan.beginPath();
// 3.定义一个起点(绘制一个起点)
// moveTo(x,y) 用来绘制起点
myCan.moveTo(200, 200);
// 4.绘制直线
// lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标
myCan.lineTo(200, 400);
myCan.lineTo(600, 400);
myCan.lineTo(600, 200);
// 画笔的颜色和粗细要在填充之前修改
myCan.strokeStyle = "orange";
myCan.lineWidth = 10;
// 闭合路径
myCan.closePath();
// 5.填充图形
myCan.stroke();
</script>
</body>
</html>
五.绘制三角形
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
console.log(myCan);
// 路径的开始
// 开始路径
myCan.beginPath();
// 3.定义一个起点(绘制一个起点)
// moveTo(x,y) 用来绘制起点
myCan.moveTo(400, 200);
// 4.绘制直线
// lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标
myCan.lineTo(200,500);
myCan.lineTo(600,500);
// 画笔的颜色和粗细要在填充之前修改
myCan.strokeStyle = "orange";
myCan.lineWidth = 10;
// 闭合路径
myCan.closePath();
// 5.填充图形
myCan.stroke();
</script>
</body>
</html>
六.快速创建矩形
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
// myCan.rect(x, y, width, height);
myCan.rect(200, 200, 400, 100);
myCan.strokeStyle = "pink";
myCan.lineWidth = 10;
// 填充
myCan.stroke();
</script>
</body>
</html>
七.快速创建描边矩形
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
// myCan.strokeRect(x, y, width, height);
myCan.strokeRect(200, 200, 400, 200);
</script>
</body>
</html>
八.快速创建填充矩形
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
console.log(myCan);
// myCan.fillRect(x, y, width, height);
// fillStyle 用来修改 填充颜色
myCan.fillStyle = "pink";
myCan.fillRect(200, 200, 400, 200);
</script>
</body>
</html>
九.填充三角形
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
console.log(myCan);
// 路径的开始
// 开始路径
myCan.beginPath();
// 3.定义一个起点(绘制一个起点)
// moveTo(x,y) 用来绘制起点
myCan.moveTo(400, 200);
// 4.绘制直线
// lineTo(x,y) 直线的起点就是上一步设置 moveTo的xy坐标
myCan.lineTo(200,500);
myCan.lineTo(600,500);
// 画笔的颜色和粗细要在填充之前修改
myCan.strokeStyle = "orange";
myCan.lineWidth = 10;
// 填充图形
myCan.fillStyle = "purple"
myCan.fill();
// 闭合路径
myCan.closePath();
// 5.填充图形
myCan.stroke();
</script>
</body>
</html>
十.清除矩形
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="1200" height="900">您当前浏览器不支持canvas 请升级浏览器版本吧</canvas>
<script>
// console.log(can);
// 1.获取元素
var canvas = document.querySelector("#can");
// 2.获取画笔
var myCan = canvas.getContext('2d');
myCan.rect(200, 300, 400, 400);
// 画笔颜色
myCan.strokeStyle = "pink";
// 画笔粗细
myCan.lineWidth = 10;
// 填充颜色
myCan.fillStyle = "yellow";
// 填充方法
myCan.fill();
// cxt.clearRect(x, y, width, hegiht);
myCan.clearRect(260, 380, 100, 100);
myCan.stroke();
</script>
</body>
</html>
十一.圆弧
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800"></canvas>
<script>
var can = document.querySelector('#can');
// 获取画笔
var mycan = can.getContext('2d');
// 弧度和角度的转换公式: rad = deg*Math.PI/180; deg=rad*180/Math.PI
// 语法:cxt.arc(x, y, r, startAngle, endAngle, counterclockwise);
// 开始路径
mycan.beginPath();
mycan.moveTo(400, 400);
var strat = 0 * Math.PI / 180;
var end = 90 * Math.PI / 180;
// mycan.arc(400, 400, 200, strat, end, false);
mycan.arc(400, 400, 200, strat, end, true);
// 结束路径
mycan.closePath();
mycan.stroke();
</script>
</body>
</html>
十二.绘制饼图
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="800" height="800"></canvas>
<script>
var mycan = can.getContext("2d");
console.log(mycan);
// 通过数据进行绘制饼图
var data = [{
"value": .2,
"color": "red",
"title": "应届生"
}, {
"value": .3,
"color": "blue",
"title": "社会招生"
}, {
"value": .4,
"color": "green",
"title": "老学员推荐"
}, {
"value": .1,
"color": "pink",
"title": "公开课"
}];
// arc(x,y,r,s,e,t)
// for
// 开始弧度
var stratA = 0;
// 结束弧度
var endA = 0;
// 圆心
var x = 400;
var y = 400;
// 半径
var r = 200;
// 弧度和角度的转换公式: rad = deg*Math.PI/180; deg=rad*180/Math.PI
for (var i = 0; i < data.length; i++) {
// 每一分数据的 占用的 弧度
// (data[i].value * 360) * Math.PI / 180
// 1.开始路径
mycan.beginPath();
// 2.绘制起点
mycan.moveTo(400, 400);
// 3.根据 value 计算 每条数据所占用的弧度
var rads = (data[i].value * 360) * Math.PI / 180;
// 72
console.log(rads);
// 4.求出一个结束弧度
// 72 0 72
// 180 72 108
endA = endA + rads;
// 72 72
mycan.arc(x, y, r, stratA, endA);
mycan.closePath();
mycan.stroke();
mycan.fillStyle = data[i].color;
mycan.fill();
// 每一份数据的开始弧度 就是 上一份数据的结束弧度
stratA = endA;
}
// 扩展
mycan.fillStyle = "black";
mycan.font = "700 30px serif";
mycan.fillText(data[0].title, 450, 500);
mycan.fillText(data[1].title, 300, 500);
mycan.fillText(data[2].title, 300, 300);
mycan.fillText(data[3].title, 500, 360);
</script>
</body>
</html>
十三.绘制文本
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#can {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="can" width="600" height="600"></canvas>
<!-- <img src="../img/1.png" alt=""> -->
<script>
// cxt.drawImage(img,x,y,width,height);
var mycan = can.getContext("2d");
// 创建元素
var img = document.createElement("img");
img.src = "../img/1.png";
// onload 等待内容 资源文件加载完毕之后执行
img.onload = function () {
// mycan.drawImage(img, 0, 0, 600, 600);
// 9参数可以对 图片进行裁剪
// sx,sy 裁剪图片的位置
// swidth,sheight 裁剪大小
// x,y, 裁剪之后显示在画布内的方位
// width,height 裁剪之后显示在画布内的大小
// cxt.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);
// 先裁剪 然后规定现在画布内的大小
mycan.drawImage(img, 330, 240, 100, 100, 0, 0, 600, 600)
mycan.fillStyle = "orange";
mycan.font = "20px 华文彩云"
mycan.fillText("", 60, 140);
}
</script>
</body>
</html>