canvas 实现圆形加背景图

好久不用canvas,昨天有小妹问怎么给一个圆形设置背景图,发现之前会的都遗忘了,顺带重新学习了下canvas,记录下顺手的小知识点。

先上效果图

 

图片原图:

 直接上代码,注释解释的挺详细的~

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>canvas画圆并追加背景图</title>
		<style>
			#canvasBox {
				border: 1px solid red;
			}
		</style>
	</head>
	<body>
		<canvas width="500px" height="500px" id="canvasBox"></canvas>
	</body>
	<script>
		const cWidth = cHeight = 500; // 画布的宽高
		const cR = 200; // 圆的半径
		let ctx = document.getElementById("canvasBox").getContext("2d");
		ctx.beginPath();
		ctx.arc(cWidth / 2, cHeight/ 2, cR, 0, Math.PI * 2, false);
		ctx.clip(); // 划重点---将画的圆形切割出来
		let img = new Image();
		img.src = './img/bg.jpg';
		img.onload = () => { // 划重点---图片加载完后执行
			img.width = 400;
			img.height = 400;
			/**
			 *  drawImage()绘制图片,参数分别是:
			 * 1.图片, 
			 * 2.x起始点(这里用的是 画布宽度/2 - 图片的宽度/2)
			 * 3.y的起始点(这里用的是 画布高度/2 - 图片的高度/2)
			 * 4.图片的宽度
			 * 5.图片的高度
			 */
			ctx.drawImage(img,cWidth / 2 - img.width / 2, cHeight / 2 - img.height / 2, img.width, img.height);
		}
		ctx.strokeStyle = "orange";
		ctx.stroke();
	</script>
</html>

是什么原因让懒惰的小菜花一周更了两篇博文?哦,原来上周忘了写,只是补缴而已~再次感谢大橙子的贡献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值