canvas学习笔记4--刮刮卡

globalCompositeOperation
该属性设置或返回如何将一个源(新的)图像绘制到目标(已有的)的图像上。
源图像 = 你打算放置到画布上的绘图
目标图像 = 你已经放置在画布上的绘图

在这里插入图片描述

<canvas id="canvas" width="800" height="600"></canvas>

<script>
	var canvas = document.querySelector("#canvas")
	var ctx = canvas.getContext("2d")
	//第一个红色矩形为目标图像
	ctx.fillStyle = "hotpink"
	ctx.fillRect(100,100,200,200)
	
	//第二个蓝色矩形为源图像
	ctx.fillStyle = "deepskyblue"
	ctx.fillRect(200,200,200,200)
</script>

在这里插入图片描述
设置globalCompositeOperation的值是atop
在这里插入图片描述
设置source-in,如下
在这里插入图片描述
设置source-out,如下
在这里插入图片描述
设置destination-over,如下
在这里插入图片描述
设置destination-atop,如下
在这里插入图片描述
设置destination-in,如下
在这里插入图片描述
设置destination-out,如下(刮刮卡就是用这个)
在这里插入图片描述
设置lighter,如下
在这里插入图片描述
设置copy,如下(copy就是之前的图片都不见了,只保留最新的图像)
在这里插入图片描述
设置xor,如下(等同于设置lighter)
在这里插入图片描述

刮刮卡功能实现

<style type="text/css">
	#ggk{
     
     
		width:400px;
		height:100px;
		position:relative;
	}
	#ggk .jp{
     
     
		width:400px;
		height:100px;
		position:absolute;
		left:0;
		top:0;
		text-align:center;
		color:deeppink;
		font-size:50px;
		line-height:100px;
	}
	#canvas{
     
     
		width:400px;
		height:100px;
		position:absolute;
		left:0;
		top:0;
	}
</style>

<body>
	<div id="ggk">
		<div class="jp">谢谢惠顾</div>
		<canvas id="canvas" width="400" height="100"></canvas>
</body>

<script>
	var canvas = document,querySelector("#canvas")
	var ggkDom = document,querySelector("#ggk")
	var ctx = canvas.getContext('2d')
	ctx.fillStyle = 'darkgray'
	ctx.fillRect(0,0,400,100)
	ctx.font = "20px 微软雅黑"
	ctx.fillStyle = 'fff'
	ctx.fillText("刮刮卡".180,50)
	var isDraw = false;
	// 设置isDraw = true,即为允许绘制
	canvas.onmousedown = function(){
     
     
		isDraw = true
	}

	// 移动的时候绘制圆形,将源图像内的目标的内容给清除掉
	canvas.onmousemove = function(e){
     
     
		if(isDraw){
     
     
			var x = e.pageX - ggkDom.offsetLeft
			var y = e.pageY - ggkDom.offsetTop
			ctx.globalCompositeOperation = "destination-out"
			ctx.arc(x,y,20,0,2*Math.PI)
			ctx.fill()
		}
		
	}
	
	canvas.onmouseup = function(){
     
     
		isDraw = false
	}
</script>

猜你喜欢

转载自blog.csdn.net/weixin_44679078/article/details/108953175
4--