fillstyle属性_HTML5 Canvas属性和方法

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

Canvas坐标

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

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

如下图所示:

30d9764a85024d4bcf01176a82cd519d.png

绘制线条

我们可以通过下面属性和方法来在 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>

在浏览器中的演示效果:

bf7cfa4d27ee1bf24dec03041144b1d5.png

从上图可以看出,我们在画布中绘制了一根蓝色的线条,线条的起始位置为(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>

在浏览器中的演示效果:

ebfbeaa187a76b8b1298dfd6173eed54.png

在画布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>

在浏览器中的演示效果:

6a290b2a004ef96434489e577670b5a1.png

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

<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>

在浏览器中的演示效果:

64ad07117d1c21db567d2f420dbd4cc1.png

上图中的紫色矩形是我们绘制的矩形,而里面的白色矩形就是我们清空的矩形区域。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>

在浏览器中的演示效果:

02eaef3c826228c799151bbb14c4ae85.png

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>

在浏览器中的演示效果:

b7912f8eb533ed85e5bed365bb10938c.png

Canvas 渐变

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

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

  • createLinearGradient()方法,可以用于创建线性的渐变对象,语法如下所示:
context.createLinearGradient(x0,y0,x1,y1);

49b13e35d2f01d7e77b837e87b78c02c.png
  • createLinearGradient() 方法,用于创建放射状/圆形渐变对象,语法如下所示:
context.createRadialGradient(x0,y0,r0,x1,y1,r1);

97b13e278a7bf1e1c0a6042a6a4b04c2.png

示例:

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

<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>

在浏览器中的演示效果:

8c48613afb7f0c22c83dd167ba62438d.png

总结

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5 canvas 是一个强大的绘图API,提供了一些方法来帮助开发者控制绘图状态。其中两个非常有用的方法是 save() 和 restore()。 save() 方法用于保存当前绘图状态,包括当前的变换矩阵、剪切区域和样式属性等。调用 save() 方法后,我们可以对绘图状态进行任意修改,而不会影响到之前保存的状态。 restore() 方法用于恢复之前保存的绘图状态。调用 restore() 方法后,我们可以回到之前保存的状态,并且继续在该状态下进行绘图操作。 这两个方法通常是成对使用的。例如,我们可以在进行一些复杂的绘图操作之前调用 save() 方法来保存当前状态,然后在绘制完成后调用 restore() 方法来恢复之前的状态。这样可以避免对后续绘图操作造成影响。 下面是一个简单的示例代码,演示了如何在 canvas 中使用 save() 和 restore() 方法: ```html <canvas id="myCanvas" width="200" height="100"></canvas> <script> var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); // 保存当前状态 ctx.save(); // 绘制一个矩形,并修改一些属性 ctx.fillStyle = "red"; ctx.fillRect(10, 10, 50, 50); ctx.strokeStyle = "blue"; ctx.lineWidth = 3; ctx.strokeRect(20, 20, 30, 30); // 恢复之前的状态 ctx.restore(); // 绘制一个圆形,此时样式属性已经恢复到之前的状态 ctx.beginPath(); ctx.arc(100, 50, 30, 0, 2*Math.PI); ctx.fillStyle = "green"; ctx.fill(); </script> ``` 在上面的代码中,我们首先调用了 save() 方法来保存当前状态,然后绘制了一个红色填充、蓝色边框的矩形。接着,我们又调用了 restore() 方法来恢复之前保存的状态。最后,我们绘制了一个绿色的圆形,此时样式属性已经恢复到之前的状态。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值