HTML5 Canvas属性和方法

纵饮孤独 提交于 2020-08-15 05:37:30

上一节我们已经学会了如何创建 Canvas 画布,本节我们来学习有关于 Canvas 中的属性和方法的使用,通过这些属性和方法,我们可以绘制各种图形,例如线条、矩形、圆形、多边形等等。

Canvas坐标

上一节我们已经学习了如何创建画布,而要在画布上绘制图形首先我们得弄清楚画布中的坐标关系。

Canvas画布中的左上角坐标为 (0,0) ,画布的 x 和 y 轴用于在画布上对绘画进行定位。

如下图所示:

绘制线条

我们可以通过下面属性和方法来在 Canvas 画布中绘制线条:

  • beginPath():用于起始一条路径,或重置当前路径。
  • closePath():创建从当前点到开始点的路径。
  • moveTo():把路径移动到画布中的指定点,不创建线条。此方法有两个参数,第一个参数为路径在 x 轴的坐标,第二个参数为路径在 y 轴的坐标。
  • lineTo():添加一个新点,然后创建从该点到画布中最后指定点的线条(该方法并不会创建线条)。
  • stroke():会实际地绘制出通过 moveTo()lineTo() 方法定义的路径。默认颜色为黑色。
  • lineWidth:设置或返回当前的线条宽度,单位为像素。
  • strokeStyle:设置或返回用于笔触的颜色、渐变或模式。
示例:

在画布中绘制一条蓝色的线条:

<!DOCTYPE html>
<html>
    <head>
    	<meta charset="utf-8">
        <title>HTML5学习(9xkd.com)</title>
    </head>
    <body>
       <canvas id="mycanvas" width="200px" height="200px" style="border: 1px solid #000;"></canvas>
       <script>
           var can = document.getElementById("mycanvas");
           var ctx = can.getContext("2d");
    
           ctx.beginPath();    // 开始绘制
           ctx.lineWidth="3";  // 指定线条宽度
           ctx.strokeStyle="#6699CC"; // 指定线条颜色
           ctx.moveTo(0,0);    // 指定线条的起始点
           ctx.lineTo(200,200);// 指定线条的结束点 
           ctx.stroke();       // 进行绘制
       </script>
    </body>
</html>

在浏览器中的演示效果: 从上图可以看出,我们在画布中绘制了一根蓝色的线条,线条的起始位置为(0, 0),结束位置为(200,200),线条宽度为 3px,线条颜色为蓝色。

绘制矩形

Canvas 中绘制矩形的方法和属性如下所示:

  • fillStyle:属性用于设置或返回用于填充绘画的颜色、渐变或模式。
  • rect():创建矩形。第一个参数为 x 坐标,第二个参数为 y 坐标,第三个参数为矩形的宽度,第四个参数为矩形的高度。
  • fillRect():绘制已经填色的矩形。第一个参数为 x 坐标,第二个参数为 y 坐标,第三个参数为矩形的宽度,第四个参数为矩形的高度。
  • strokeRect():绘制矩形,默认颜色是黑色。第一个参数为 x 坐标,第二个参数为 y 坐标,第三个参数为矩形的宽度,第四个参数为矩形的高度。
  • clearRect():清空给定矩形内的指定像素。第一个参数为要清除矩形左上角的 x 坐标,第二个参数为要清除矩形左上角的 y 坐标,第三个参数为要清除矩形的宽度,第四个参数为要清除矩形的高度。
示例:

在画布x坐标50,y坐标50的位置,绘制一个宽为 50px,高为 100px的空白矩形:

<script>
var can = document.getElementById("mycanvas");
var ctx = can.getContext("2d");

ctx.rect(50, 50, 50, 100);
ctx.stroke();
</script>

在浏览器中的演示效果:

在画布x坐标70,y坐标40的位置,绘制一个宽为 70px,高为 40px 的粉色矩形:

<script>
	var can = document.getElementById("mycanvas");
	var ctx = can.getContext("2d");
	
    ctx.fillStyle = "pink";  // 填充颜色
    ctx.fillRect(70, 40, 70, 40);
</script>

在浏览器中的演示效果:

在给定矩形内清空一个矩形:

<script>
	var can = document.getElementById("mycanvas");
	var ctx = can.getContext("2d");

	ctx.fillStyle = "#9999FF";
	ctx.fillRect(25, 25, 150, 150);  // 绘制矩形
	ctx.clearRect(50,50,50,50);      // 要清除矩形的大小
</script>

在浏览器中的演示效果:

上图中的紫色矩形是我们绘制的矩形,而里面的白色矩形就是我们清空的矩形区域。clearRect() 方法的坐标也是从(0, 0)

绘制圆形

在 Canvas 中可以使用 arc() 方法来创建曲线或者圆。

arc() 方法的语法如下所示:

context.arc(x,y,r,sAngle,eAngle,counterclockwise);

其中 x 为圆的中心的 x 坐标,y 为圆的中心的 y 坐标,r 为圆的半径,sAngle 为起始角,eAngle 为结束角。counterclockwise 是可选参数,规定应该逆时针还是顺时针绘图,false为顺时针,true 为逆时针。

示例:

例如在画布中绘制一个半径为50的圆形:

<script>
	var can = document.getElementById("mycanvas");
	var ctx = can.getContext("2d");

	ctx.beginPath();
	ctx.arc(100, 100, 50, 0, 2*Math.PI);
	ctx.stroke();
</script>

在浏览器中的演示效果:

Canvas 文本

使用 Canvas 绘制文本,需要使用到的属性和方法:

  • font :设置或返回画布上文本内容的当前字体属性。可以设置的属性值有 font-stylefont-variantfont-weightfont-sizefont-family等。
  • textAlign :设置或返回文本内容的当前对齐方式。
  • fillText():在画布上绘制填色的文本。默认颜色是黑色。
  • strokeText():在画布上绘制文本,没有填色。第一个参数为画布上输出的文本,第二个参数为绘制文本的 x 坐标位置,第三个参数为绘制文本的 y 坐标位置。
示例:

在画布上绘制文本:

<script>
	var can = document.getElementById("mycanvas");
	var ctx = can.getContext("2d");

	ctx.font = "28px Georgia";
	ctx.strokeText("侠课岛", 50, 50);
</script>

在浏览器中的演示效果:

Canvas 渐变

我们可以在 Canvas 中给矩形、圆形、文本、线条填充渐变,各种形状可以自己定义不同的颜色。

设置渐变的方式有下面两种:

  • createLinearGradient() 方法,可以用于创建线性的渐变对象,语法如下所示:
context.createLinearGradient(x0,y0,x1,y1);
参数 描述
x0 第一个参数为渐变开始点的 x 坐标
y0 第二个参数为渐变开始点的 y 坐标
x1 第三个参数为渐变结束点的 x 坐标
y1 第四个参数为渐变结束点的 y 坐标
  • createLinearGradient() 方法,用于创建放射状/圆形渐变对象,语法如下所示:
context.createRadialGradient(x0,y0,r0,x1,y1,r1);
参数 描述
x0 渐变的开始圆的 x 坐标
y0 渐变的开始圆的 y 坐标
r0 开始圆的半径
x1 渐变的结束圆的 x 坐标
y1 渐变的结束圆的 y 坐标
r1 结束圆的半径
示例:

定义一个从粉色到蓝色的渐变的矩形:

<script>
	var can = document.getElementById("mycanvas");
	var ctx = can.getContext("2d");

	var grd = ctx.createLinearGradient(0, 0, 150, 0);
	grd.addColorStop(0, "#FFC0CB"); // 粉色
	grd.addColorStop(1, "#87CEEB"); // 蓝色
	tx.fillStyle = grd;
	ctx.fillRect(10,50,180,100);  // 绘制矩形
</script>

在浏览器中的演示效果:

总结

Canvas 中的属性和方法有很多,通过这些属性和方法,我们就能成功在 Canvas 画布中绘制各种图形了。要记住 <canvas> 元素本身并没有绘制能力,它仅是一个图形容器,我们是通过 JavaScript 脚本来完成实际绘制的。

想查看更多可以点击链接:https://www.9xkd.com/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!