canvas渐隐

1.在绘制每帧图像时调整

重新绘制每帧中要渐隐的部分,调整颜色和透明度,所有改变都由自己控制,逻辑和代码可能比较复杂(没有尝试过)。

2.使用半透明区域反复覆盖

该方法的原理是将目标区域内的原图像以相同的比例透明化。该方法的核心是使用canvas.getContext(“2d”)的context对象的globalCompositeOperation属性。将globalCompositeOperation设为destination-in(在新绘制的区域中显示原图像。只有新绘制的区域内的原图像部分会被显示,新区域是透明的。),此时将新区域的fillStyle设置一个透明系数,每次填充新区域时,都会将原来的图透明化。但由于使用了destination-in,没有被新区域覆盖的部分会被完全清空,所以只能用于全局透明化或单一图层。

<!DOCTYPE html>
<html>
<body>

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.
</canvas>

<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.strokeStyle="rgb(255, 0, 0, 1)";//设置线条颜色
ctx.fillStyle="rgba(0, 0, 0, 0.7)";//设置填充区域颜色为白色,透明度0.7,用于将区域渐变为透明
var x=0,y=0;
setInterval(draw, 200);

function draw(){
	//对区域内图像进行透明化渐变
	ctx.globalCompositeOperation = "destination-in";// 在新绘制的区域中显示原图像。只有新绘制的区域内的原图像部分会被显示,新区域是透明的。
	ctx.fillRect(0,0,150,100);// 填充区域,将目标图像逐渐透明化
	ctx.globalCompositeOperation = "source-over";默认。在原图像上绘制新图像。

	//绘制直线
	ctx.beginPath();
	if (x > 150) x=0,y=0;
	ctx.moveTo(x,y);
	x+=4,y+=4;
	ctx.lineTo(x,y);
	ctx.stroke();
}
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值