复习
上一节中,我们学习了如何在canvas中切出一个图来,掌握这个技能后,也许有一天你就不需要设计来帮你切图来,你自己就可以在前端搞定切图了。我们用来切图的方法和之前我们学习使用图片的方法一样,叫drawImage(),不过需要传入9个参数。如下drawImage(img,x,y,w,h,x2,y2,w2,h2),这9个参数分别是img,要进行剪切的原始图片,x,y是源图片左上角的坐标。w,h是源图片放到canvas中时的大小,我们可以根据自己的需要进行设置,但是最终这个源图是不显示出来的。x2,y2是切割出来后的图片放置位置,也就是这张图的左上角坐标,w2,h2是切割好的图的宽度和高度。
学习
截止这节之前,我们一直都在都在学习如何把图像绘制到canvas上去,这一节我们学习一下,如何将绘制好的图像擦掉。
clearRect(x,y,width,height)用来清除掉已经绘画好的内容,让清除的区域变得透明。这里面有四个参数,其中x是被清除区域的左上角的x坐标,y是被清除区域y坐标。width是被清除区域的宽度,height是被清除区域的高度。
下面,进入示例环节。
首先,我们画一个粉红色的矩形出来。
1
2
3
4
5
6
7
8
9
10
11<canvas width="400" height="400" id="mycanvas"></canvas>
<script>
const canvas = document.getElementById('mycanvas')
if (canvas.getContext()) {
const ctx = canvas.getContext('2d')
ctx.beginPath()
ctx.fillStyle = '#e74478'
ctx.fillRect(100,100,100, 100)
ctx.closePath()
}
</script>确认我们确实画了一个粉红色的矩形后,我们分别擦掉它的四个角,擦掉一个20*20的正方形。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<canvas width="400" height="400" id="mycanvas"></canvas>
<script>
const canvas = document.getElementById('mycanvas')
if (canvas.getContext()) {
const ctx = canvas.getContext('2d')
ctx.beginPath()
ctx.fillStyle = '#e74478'
ctx.fillRect(100,100,100, 100)
ctx.closePath()
// 擦掉左上角
ctx.clearRect(100,100,20,20)
// 擦掉右上角
ctx.clearRect(180, 100, 20,20)
// 擦掉左下角
ctx.clearRect(100, 180, 20, 20)
// 擦掉右下角
ctx.clearRect(180,180, 20, 20)
}
</script>以后遇到某个图形需要擦除的时候,我们就可以使用这个clearRect了,不用再重新开始,从头再画。下一节我们学习绘画状态的恢复与保存。