当前位置:网站首页>canvas基础1 - 画直线(通俗易懂)
canvas基础1 - 画直线(通俗易懂)
2022-07-06 09:21:00 【玲小叮当】
系列文章目录
本文开始是canvas,通俗易懂,小白也没烦恼,根据慕课网liuyubobobo老师的视频课学习整理
视频课指路:慕课网 liuyubobobo老师 炫丽的倒计时效果Canvas绘图与动画基础
1、声明标签
- 宽高在标签上
<canvas id="canvas" width="1024" height="768" style="background-color: rgb(200,200,200);display: block;margin: 20px auto;" >
当前浏览器不支持canvas,请更换浏览器后再试
</canvas>
- 宽高在js中设置
<canvas id="canvas" style="background-color: rgb(200,200,200);display: block;margin: 20px auto;">
当前浏览器不支持canvas,请更换浏览器后再试
</canvas>
window.onload = function () {
// 获取
var canvas = document.getElementById('canvas')
canvas.width = 1024
canvas.height = 768
// 判断该浏览器是否可以使用canvas
if (canvas.getContext('2d')) {
// 使用2d绘图
var context = canvas.getContext('2d')
// 使用context绘制
} else {
alert('当前浏览器不支持canvas,请更换浏览器后再试')
}
}
2、画一条直线
canvas先设置状态最后绘制

画一条直线js代码
context.moveTo(x, y) 起点
context.lineTo(x, y) 终点
context.lineWidth = 5 线宽
context.strokeStyle = ‘#005588’ 线样式
context.stroke() 绘制
window.onload = function () {
var canvas = document.getElementById('canvas')
canvas.width = 1024
canvas.height = 768
if (canvas.getContext('2d')) {
var context = canvas.getContext('2d')
// 使用context绘制
// 从坐标(100,100)为起点开始
context.moveTo(100, 100)
// 到坐标(700,700)为终点画一条直线
context.lineTo(700, 700)
// 线宽为5
context.lineWidth = 5
// 线的样式颜色
context.strokeStyle = '#005588'
// 执行划直线这个操作
context.stroke()
} else {
alert('当前浏览器不支持canvas,请更换浏览器后再试')
}
}
效果
3、线条组成的图形 - 画一个三角形
window.onload = function () {
var canvas = document.getElementById('canvas')
canvas.width = 1024
canvas.height = 768
if (canvas.getContext('2d')) {
var context = canvas.getContext('2d')
// 使用context绘制
// 从坐标(100,100)为起点开始
context.moveTo(100, 100)
context.lineTo(700, 700)
context.lineTo(100, 700)
context.lineTo(100, 100)
// 线宽为5
context.lineWidth = 5
// 线的样式颜色
context.strokeStyle = '#005588'
// 执行划直线这个操作
context.stroke()
} else {
alert('当前浏览器不支持canvas,请更换浏览器后再试')
}
}

4、多边形填充加描边
- context.fillStyle = ‘rgb(2,100,30)’ 填充的颜色
- context.fill() 填充
window.onload = function () {
var canvas = document.getElementById('canvas')
canvas.width = 1024
canvas.height = 768
if (canvas.getContext('2d')) {
var context = canvas.getContext('2d')
// 使用context绘制
// 从坐标(100,100)为起点开始
context.moveTo(100, 100)
// 到坐标(700,700)为终点画一条直线
context.lineTo(700, 700)
context.lineTo(100, 700)
context.lineTo(100, 100)
// 线宽为5
context.lineWidth = 5
// 线的样式颜色
context.strokeStyle = '#f00'
// 执行划直线这个操作
context.stroke()
// 多边形填充
context.fillStyle = 'rgb(2,100,30)'
context.fill()
} else {
alert('当前浏览器不支持canvas,请更换浏览器后再试')
}
}

5、定义两个形状
- context.beginPath() 起始
- context.closePath() 结束
- 这两个方法将两段路径包裹起来将其与其它路径分隔开
window.onload = function () {
var canvas = document.getElementById('canvas')
canvas.width = 1024
canvas.height = 768
if (canvas.getContext('2d')) {
var context = canvas.getContext('2d')
// 使用context绘制
// 从坐标(100,100)为起点开始
context.beginPath()
context.moveTo(100, 100)
// 到坐标(700,700)为终点画一条直线
context.lineTo(700, 700)
context.lineTo(100, 700)
context.lineTo(100, 100)
context.closePath()
// 线宽为5
context.lineWidth = 5
// 线的样式颜色
context.strokeStyle = '#f00'
// 执行划直线这个操作
context.stroke()
// // 多边形填充
// context.fillStyle = 'rgb(2,100,30)'
// context.fill()
context.beginPath()
context.moveTo(200, 100)
context.lineTo(700, 600)
context.closePath()
context.strokeStyle = '#000'
context.stroke()
} else {
alert('当前浏览器不支持canvas,请更换浏览器后再试')
}
}

6、七巧板demo例子
- html部分
<canvas id="canvas" width="800" height="800" style="background-color: aliceblue;display: block;margin: 10px auto;">
当前浏览器不支持canvas,请更换浏览器后再试
</canvas>
- 自造数据部分
var tangram = [
{
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: 0,y: 800},{
x: 400,y: 400},{
x: 400,y: 800},],
color: '#f50'
}, {
p: [{
x: 400,y: 800}, {
x: 800,y: 800}, {
x: 400,y: 400}, ],
color: '#0f5'
}, {
p: [{
x: 400,y: 400}, {
x: 800,y: 0}, {
x: 600,y: 600}, ],
color: '#25f'
}, {
p: [{
x: 800,y: 0}, {
x: 600,y: 600}, {
x: 800,y: 800}, ],
color: '#f33'
},
]
- js部分
let canvas = document.getElementById('canvas')
if (canvas.getContext('2d')) {
var context = canvas.getContext('2d')
tangram.forEach((item, index) => {
draw(item, context)
})
}
function draw(piece, cxt) {
cxt.beginPath()
cxt.moveTo(piece.p[0].x, piece.p[0].y)
piece.p.forEach((item, index) => {
cxt.lineTo(item.x, item.y)
})
cxt.closePath()
cxt.fillStyle = piece.color
cxt.fill()
cxt.lineWidth = 2
cxt.strokeStyle = '#000'
cxt.stroke()
}
7、绘制正方形demo
<canvas id="canvas" width="1024" height="768" style="display: block; background-color: #eee;margin: 10px auto;">
不能使用
canvas
</canvas>
<script> var canvas = document.getElementById('canvas') var context = canvas.getContext('2d') drawRect(context, 100, 100, 400, 400, 10, '#600', '#008833') function drawRect(cxt, x, y, width, height, borderWidth, borderColor, borderFill) {
cxt.beginPath() cxt.moveTo(x, y) cxt.lineTo(x + width, y) cxt.lineTo(x + width, y + height) cxt.lineTo(x + width, y + height) cxt.lineTo(x, y + height) cxt.closePath() cxt.lineWidth = borderWidth cxt.strokeStyle = borderColor cxt.fillStyle = borderFill cxt.fill() cxt.stroke() } </script>
总结
本文问canvas第一节,之后会持续更新,大家感觉还实用的话,关注或者点个赞都可以,谢谢啦
边栏推荐
猜你喜欢

1.C语言矩阵加减法

2. C language matrix multiplication

4.分支语句和循环语句

FAQs and answers to the imitation Niuke technology blog project (III)
![[面試時]——我如何講清楚TCP實現可靠傳輸的機制](/img/d6/109042b77de2f3cfbf866b24e89a45.png)
[面試時]——我如何講清楚TCP實現可靠傳輸的機制

Cookie和Session的区别

MySQL事务及实现原理全面总结,再也不用担心面试

4. Binary search

Wei Pai: the product is applauded, but why is the sales volume still frustrated

3. C language uses algebraic cofactor to calculate determinant
随机推荐
MySQL Database Constraints
List set map queue deque stack
8.C语言——位操作符与位移操作符
Wei Pai: the product is applauded, but why is the sales volume still frustrated
2. C language matrix multiplication
20220211-CTF-MISC-006-pure_ Color (use of stegsolve tool) -007 Aesop_ Secret (AES decryption)
【手撕代码】单例模式及生产者/消费者模式
Questions and answers of "signal and system" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
IPv6 experiment
Miscellaneous talk on May 14
1. C language matrix addition and subtraction method
仿牛客技术博客项目常见问题及解答(一)
[the Nine Yang Manual] 2021 Fudan University Applied Statistics real problem + analysis
2. Preliminary exercises of C language (2)
MySQL事务及实现原理全面总结,再也不用担心面试
【九阳神功】2020复旦大学应用统计真题+解析
5月14日杂谈
更改VS主题及设置背景图片
6.函数的递归
【九阳神功】2019复旦大学应用统计真题+解析