项目实训(十二):如何实现设置js画板的背景

因为项目的要求,我们的画板要求的功能是可以对现有的图片进行修改的功能,所以需要针对某张图片打开画板,然后下面自动就有该图片作为背景,然后医生可以在上面绘制标记等。

作为一个html小白,我首先想到的是以前在试用另一个画板的时候遇到过的<style>。

如图的代码让body的背景变成透明的,让v1的背景变成url括号里的那张图片。之后的三句分别代表不重复、位置固定和位于中心。如果没有后三句的话就会变成:

图片会重复铺满整个画布。因此后面三句还是必要的。

于是延续这个思路,我也把这个方法代到了新的画板里。经过一番搜寻,canvas并不能用<style>,但是因为新画板用了css,因此可以直接在css里改。

那到现在为止,就可以很好地实现我们想要的样子了,需要的图片会如愿出现在画布中央。但是这样又出现了一个新的问题,那就是在保存画作时,背景不会跟着一起保存,只有使用者画出的部分会被保存下来。如此一来就只能转变思路了。但是这也算给了我新的思路吧,我们可以在打开画板时由程序先把我们想改的图片画在画板上,清除的时候再画一次,就可以完美实现想要的效果了~

 html里一开始的那次绘制:

<script>
			(function(){
				var canvas = document.querySelector('#cavsImage');
				var ctx = canvas.getContext('2d');

				//canvas.width = 600;
				//canvas.height = 600;
				//canvas.style.border = '1px solid #ccc';

				//第一步,创建图片的dom对象
				var img1 = new Image();
				img1.src='123.png';//只要设置了src属性,当前img对象立即去加载图片。
				//第二步,图片加载完成后,把图片绘制到canvas上
				img1.onload = function() {
					ctx.drawImage(img1,30,30);
					//ctx.drawImage(img1,250,30,img1.width*1.2,img1.height*1.2);
					//for(var i=0;i<5;i++){
						//ctx.drawImage(img1,30+i*20,250+i*20,img1.width*0.8,img1.height*0.8);
					//}

					//绘制指定的裁剪图片
					//图片截取
					//参数: 1、图片对象,2、截取图片x坐标,3、截取图片Y坐标
					//4、截取图片宽,5、截取图片高,
					//6、7、绘制图片的X、y坐标, 8、9、绘制图片的宽高
					//ctx.drawImage(img1,15,70,70,70,350,350,210,210);
				};
			})();
		</script>

 js里的清除画布:

const clear = document.querySelector("#clear");
	clear.addEventListener("click", () => {
		// clearRect方法可以清空一定区域内的内容 填写的值为x坐标 y坐标 清除的宽度 和 高度 我们全部要清除 所以直接从左上角开始 宽高为画布的宽高了 再来试试
		ctx.clearRect(0, 0, 1280, 1080);
		var img1 = new Image();
		img1.src='123.png';
		ctx.drawImage(img1,30,30);
		// OK了
	});

 最终效果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值