HTML5利用Canvas绘制图形(绘制渐变、模式、变换)

绘制渐变

渐变是一种很普遍的视觉形象,能带来视觉上的舒适感。在Canvas中,绘图API提供了两个原生的渐变方法,包括线性渐变和径向渐变。渐变,在颜色集上使用逐步抽样的算法,可以应用的描边样式和填充样式中。使用渐变需要三个步骤:首先是创建渐变对象;其次是设置渐变颜色和过渡方式;最后将渐变对象赋值给填充样式或描边样式。

代码实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>绘制渐变</title>
		<script type="text/javascript">
			function Draw(){
				var canvas=document.getElementById("canvas");
				var context=canvas.getContext("2d");
				
				//创建渐变对象:线性渐变
				var grd=context.createLinearGradient(0,0,300,0);
				//设置渐变颜色及方式
				grd.addColorStop(0,"#f90");
				grd.addColorStop(1,"#0f0");
				//将填充样式设置为线性渐变对象
				context.fillStyle=grd;
				context.fillRect(0,0,300,80);
			}
			window.addEventListener("load",Draw,false);
			function Draw2(){
				var canvas=document.getElementById("canvas");
				var context=canvas.getContext("2d");
				
				//创建渐变对象:径向渐变
				var grd=context.createLinearGradient(0,0,300,0);
				//设置渐变颜色及方式
				grd.addColorStop(0,"#0f0");
				grd.addColorStop(1,"#f90");
				//将填充样式设置为线性渐变对象
				context.fillStyle=grd;
				context.beginPath();
				context.arc(180,180,90,0,Math.PI*2,true);
				context.fill();
			}
			window.addEventListener("load",Draw2,false);
		</script>
	</head>
	<body>
		<canvas id="canvas" width="400" height="300">你的浏览器不支持canvas</canvas>
		<canvas id="canvas2" width="400" height="300">你的浏览器不支持canvas</canvas>
	</body>
</html>


效果 上(线性渐变),下(径向渐变)


模式

    模式是一个抽象的概念,描述的是一种规律。在Canvas中,通常会为贴图图像创建一个模式,用于描边样式和填充样式,可以绘制出带图案的边框和背景图。

代码实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>模式</title>
		<script type="text/javascript">
			function Draw(){
				var canvas=document.getElementById("canvas");
				var context=canvas.getContext("2d");
				
				var img=new Image();
				img.src="../img/5.jpg";
				img.οnlοad=function(){
					//创建一个贴图模式,循环平铺图像
					var ptrn=context.createPattern(img,'repeat'); 
					context.fillStyle=ptrn;
					context.fillRect(0,0,1000,2000);
				}
			}
			window.addEventListener("load",Draw,false);
		</script>
	</head>
	<body>
		<canvas id="canvas" width="400" height="300">你的浏览器不支持canvas</canvas>
	</body>
</html>

效果


变换

   在绘制图像的过程中,如果一种形状的图形要绘制多次,显然是增加了复杂性。Canvas绘图API提供了多种变换方法,为实现复杂的绘图操作提供了便捷的方法。常见的变换方法包括平移、缩放、旋转和变形。

1. 移动变换

    将整个坐标系统设置一定的偏移数量,绘制出来的图像也会跟着偏移。(默认以左上角(0,0)作为原点)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>绘制渐变</title>
		<script type="text/javascript">
			function Draw(){
				var canvas=document.getElementById("canvas");
				var context=canvas.getContext("2d");
				
				//设置移动偏移量
				context.translate(200,120);
				
				//绘制一个圆形脸谱
				ArcFace(context);
			}
			function ArcFace(context){
				//绘制一个圆形边框
				context.beginPath();
				context.arc(0,0,90,0,Math.PI*2,true);
				context.lineWidth=5;
				context.strokeStyle="#f90";
				context.stroke();
				//绘制一个脸谱
				context.beginPath();
				context.moveTo(-30,-30);
				context.lineTo(-30,-20);
				context.moveTo(30,-30);
				context.lineTo(30,-20);
				context.moveTo(-20,30);
				context.bezierCurveTo(-20,44,20,30,30,20);
				context.strokeStyle="#000";
				context.lineWidth=10;
				context.lineCap="round";
				context.stroke();
			}
			window.addEventListener("load",Draw,false);
		</script>
	</head>
	<body>
		<canvas id="canvas" width="400" height="300">你的浏览器不支持canvas</canvas>
	</body>
</html>

效果  


2.缩放变换

   缩放变换是将整个坐标系统设置一对缩放因子,绘制出来的图像会相应的缩放。

代码实现

function Draw(){
				var canvas=document.getElementById("canvas");
				var context=canvas.getContext("2d");
				
				//设置移动偏移量
				context.translate(200,120);
				
				//缩放图像,在水平方向和垂直方向设置不同的缩放因子
				context.scale(0.6,0.4)
				
				//绘制一个圆形脸谱
				ArcFace(context);
			}

效果


3.旋转变换

  是将整个坐标系统设置一个选装的角度,绘制出来的图像会相应的旋转。

function Draw(){
				var canvas=document.getElementById("canvas");
				var context=canvas.getContext("2d");
				
				//设置移动偏移量
				context.translate(200,120);
				
				//旋转图像,顺时针旋转30度
				context.rotate(Math.PI/6);
				//缩放图像,在水平方向和垂直方向设置不同的缩放因子
				context.scale(0.6,0.4)
				
				//绘制一个圆形脸谱
				ArcFace(context);
			}

效果


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值