赞
踩
Canvas是一个矩形区域的画布,可以用JS控制每一个像素在上面绘画。canvas 标签使用 JavaScript 在网页上绘制图像,本身不具备绘图功能。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
获取画布
let canvas=document.getElementById("canvas");
获取画笔
let context=canvas.getContext("2d");
后面就可以开始画图了
context.arc(80,0,80,0,Math.PI,false);//前两个数字是圆心坐标,第三个数字是半径,(0,Math.PI),false顺时针
默认样式(和不设置globalCompositeOperation属性一样)。
在目标图像上(先画的)显示源图像(后画的)
context.globalCompositeOperation="source-over";
效果展示
在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的。
<canvas id="canvas" height="500" width="500"> <p>您的浏览器不支持canvas</p> </canvas> <script type="text/javascript"> //绘制圆形 let canvas=document.getElementById("canvas"); let context=canvas.getContext("2d"); //第一种 context.fillStyle = "red";//设置填充颜色(风格) context.beginPath(); context.arc(40,250,30,0,Math.PI*2,true); context.closePath();//填充颜色需要关闭路径 context.fill();//开始填充 context.globalCompositeOperation="source-atop";//关键代码 context.fillStyle = "green"; context.beginPath();//开始路径 context.arc(70,250,25,0,Math.PI*2,true); context.closePath();//填充颜色需要关闭路径 context.fill();//开始填充 </script>
效果展示
相当于第二个图像覆盖了第一个图像,但两个图形都变成透明的,只有重叠的地方显色(因为第一个图形被覆盖,所以显色为第二个图形颜色)
context.globalCompositeOperation="source-in";
效果展示
第一个图形覆盖住第二个图形,并变得透明,第二个图形不受影响(只不过被覆盖的地方无法显色)
context.globalCompositeOperation="source-out";
效果展示
小结:前面四种和后面四种效果完全一样,只不过覆盖顺序改反过来了
在源图像上方显示目标图像。
context.globalCompositeOperation="destination-over";
效果展示
在源图像顶部显示目标图像。源图像之外的目标图像部分不会被显示。
context.globalCompositeOperation="destination-atop";
效果展示
第一个图形覆盖第二个图形,全部透明,只有重叠部分显色(第一个图形的颜色)
context.globalCompositeOperation="destination-in";
效果展示
第一个图形覆盖第二个图形,第二个图形所在区域全部透明
context.globalCompositeOperation="destination-out";
效果展示
两个图形都显色,重叠部分颜色融合
context.globalCompositeOperation="lighter";
这个属性写在哪个图形后面,哪个图形就透明不显色
context.globalCompositeOperation="copy";
效果展示
1.globalCompositeOperation这个属性有目标性(自己总结的用词可能不是很准确),写在哪一个图形后面,哪一个图形就是第一个图形,就算是写在最后面的代码上面,那么哪一个代码组成的图形就为组合的时候的第一个图形
2.1-4的属性和5-8的属性基本一一对应,不同点是1-4是第一个图形被覆盖,5-8是第二个图型被覆盖。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。