WEB前端开发学习----10. canvas实现画板的两个方法

方法1:查看演示 点击鼠标作画

此方法就是鼠标移动的时候不停的画小圆点,然后用等粗的线将小圆点串起来(有点类似于珍珠项链)。因为是小圆点,所以效果要比方法2好,比较平滑。


方法2:查看演示 点击鼠标作画

这个方法很容易理解,就是不断的将鼠标所在的位置用线段连起来。缺点是不够平滑,尤其是粗线条的时候。


方法1:

<!doctype html>
<html>
<head>
	<meta charset="utf-8"/>
</head>
<body style="margin:0">
	<canvas id="canvas">请更新浏览器版本</canvas>

	<script>
		var canvas=document.getElementById("canvas");
		var cxt=canvas.getContext("2d");
		var radius=10;
		var falge=false;
		//画板大小为屏幕大小
		canvas.width=window.innerWidth;
		canvas.height=window.innerHeight;
		cxt.lineWidth=20;
		//添加监听对象
		canvas.addEventListener("mousedown", start);
		canvas.addEventListener("mouseup", stop);
		canvas.addEventListener("mousemove", putPoint);

    	function putPoint(e){
			if(falge){
				cxt.lineTo(e.clientX, e.clientY);
				cxt.stroke();
				cxt.beginPath();
				cxt.arc(e.clientX, e.clientY, radius, 0, 360, false);
				cxt.fill();
				cxt.beginPath();
				cxt.moveTo(e.clientX, e.clientY);

			}
		}

		function start(e){
			falge=true;
			putPoint(e);
		}
		function stop(){
			falge=false;
			cxt.beginPath();
		}

	</script>

</body>
</html>


方法2:

<!doctype html>
<html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<canvas width="900" height="500" id="canvas" style="border:1px solid black">请更新浏览器版本</canvas>

	<script >
		var canvas=document.getElementById("canvas");
		var cxt=canvas.getContext("2d");
		var flag=false
		cxt.lineWidth=20;
		canvas.οnmοusedοwn=function(evt){
			//alert(evt.pageX);
			//alert(this.offsetLeft);
		
				var startX=evt.clientX-this.offsetLeft;
				var startY=evt.clientY-this.offsetTop;
				cxt.beginPath();
				cxt.moveTo(startX, startY);
				flag=true;
			
		}

		canvas.οnmοusemοve=function(evt){
			if(flag){
				var endX=evt.clientX-this.offsetLeft;
				var endY=evt.clientY-this.offsetTop;
			
				cxt.lineTo(endX, endY);
				cxt.stroke();
			}
		}

		canvas.οnmοuseup=function(){
			flag=false;
		}
		canvas.οnmοuseοut=function(){
			flag=false;
		}


	</script>
</body>
</html>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值