视觉艺术

HTML5 Canvas属性和方法

2020-06-24  本文已影响0人  暖A暖

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

Canvas坐标

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

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

如下图所示:


绘制线条

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

示例:

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

<!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 中绘制矩形的方法和属性如下所示:

示例:

在画布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 绘制文本,需要使用到的属性和方法:

示例:

在画布上绘制文本:

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

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

在浏览器中的演示效果:


Canvas 渐变

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

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

context.createLinearGradient(x0,y0,x1,y1);
参数 描述
x0 第一个参数为渐变开始点的 x 坐标
y0 第二个参数为渐变开始点的 y 坐标
x1 第三个参数为渐变结束点的 x 坐标
y1 第四个参数为渐变结束点的 y 坐标
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/

上一篇下一篇

猜你喜欢

热点阅读