canvas绘图中的图片组合

时间2020-4-4周六(第一次写,也就是一个学习总结)

1.canvas简介

Canvas是一个矩形区域的画布,可以用JS控制每一个像素在上面绘画。canvas 标签使用 JavaScript 在网页上绘制图像,本身不具备绘图功能。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

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属性)

1.source-over

默认样式(和不设置globalCompositeOperation属性一样)。
在目标图像上(先画的)显示源图像(后画的)

context.globalCompositeOperation="source-over";

效果展示
source-over

source-atop

在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的。

<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>

效果展示
source-atop

source-in

相当于第二个图像覆盖了第一个图像,但两个图形都变成透明的,只有重叠的地方显色(因为第一个图形被覆盖,所以显色为第二个图形颜色)

context.globalCompositeOperation="source-in";

效果展示
在这里插入图片描述

source-out

第一个图形覆盖住第二个图形,并变得透明,第二个图形不受影响(只不过被覆盖的地方无法显色)

context.globalCompositeOperation="source-out";

效果展示
在这里插入图片描述

小结:前面四种和后面四种效果完全一样,只不过覆盖顺序改反过来了 

destination-over

在源图像上方显示目标图像。

context.globalCompositeOperation="destination-over";

效果展示
在这里插入图片描述

destination-atop

在源图像顶部显示目标图像。源图像之外的目标图像部分不会被显示。

context.globalCompositeOperation="destination-atop";

效果展示
在这里插入图片描述

destination-in

第一个图形覆盖第二个图形,全部透明,只有重叠部分显色(第一个图形的颜色)

context.globalCompositeOperation="destination-in";

效果展示
在这里插入图片描述

destination-out

第一个图形覆盖第二个图形,第二个图形所在区域全部透明

context.globalCompositeOperation="destination-out";

效果展示
在这里插入图片描述

lighter

两个图形都显色,重叠部分颜色融合

context.globalCompositeOperation="lighter";

在这里插入图片描述

copy

这个属性写在哪个图形后面,哪个图形就透明不显色

context.globalCompositeOperation="copy";

效果展示
在这里插入图片描述

总结

1.globalCompositeOperation这个属性有目标性(自己总结的用词可能不是很准确),写在哪一个图形后面,哪一个图形就是第一个图形,就算是写在最后面的代码上面,那么哪一个代码组成的图形就为组合的时候的第一个图形
2.1-4的属性和5-8的属性基本一一对应,不同点是1-4是第一个图形被覆盖,5-8是第二个图型被覆盖。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值