HTML5:Canvas 标签

逃离我推掉我的手 2022-10-11 13:33 464阅读 0赞

什么是 canvas?
H5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成。<canvas> 标签只是图形容器,必须使用脚本来绘制图形。

创建一个画布(Canvas)

一个画布在网页中是一个矩形框,通过 <canvas> 元素来绘制。默认情况下 <canvas> 元素没有边框和内容。

例:

  1. <canvas id="myCanvas" width="200" height="100"></canvas>
  • 标签通常需要指定一个 id 属性 (脚本中经常引用)
  • width 和 height 属性定义的画布的大小

使用 style 属性来添加边框:

  1. <canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
  2. </canvas>

使用 JavaScript 来绘制图像

canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成:
示例:

  1. var c=document.getElementById("myCanvas");
  2. var ctx=c.getContext("2d");
  3. ctx.fillStyle="#FF0000";
  4. ctx.fillRect(0,0,150,75);

Canvas 坐标

  • canvas 是一个二维网格
  • canvas 的左上角坐标为 (0,0)
  • 上面的 fillRect 方法拥有参数 (0,0,150,75)。

示例:
如下图所示,画布的 X 和 Y 坐标用于在画布上对绘画进行定位。鼠标移动的矩形框上,显示定位坐标。

f9b7cc43e2c16c063c2c62ad3951e079.png

Canvas 路径


























































方法 描述
fill() 填充当前绘图(路径)
stroke() 绘制已定义的路径
beginPath() 起始一条路径,或重置当前路径
moveTo() 把路径移动到画布中的指定点,不创建线条
closePath() 创建从当前点回到起始点的路径
lineTo() 添加一个新点,然后在画布中创建从该点到最后指定点的线条
clip() 从原始画布剪切任意形状和尺寸的区域
quadraticCurveTo() 创建二次贝塞尔曲线
bezierCurveTo() 创建三次方贝塞尔曲线
arc() 创建弧/曲线(用于创建圆形或部分圆)
arcTo() 创建两切线之间的弧/曲线
isPointInPath() 如果指定的点位于当前路径中,则返回 true,否则返回 false

示例:
定义开始坐标(0,0), 和结束坐标 (200,100)。然后使用 stroke() 方法来绘制线条:

  1. var c=document.getElementById("myCanvas");
  2. var ctx=c.getContext("2d");
  3. ctx.moveTo(0,0);
  4. ctx.lineTo(200,100);
  5. ctx.stroke();

在 canvas 中绘制圆形

  1. arc(x,y,r,start,stop)

示例:
使用 arc() 方法 绘制一个圆:

  1. var c=document.getElementById("myCanvas");
  2. var ctx=c.getContext("2d");
  3. ctx.beginPath();
  4. ctx.arc(95,50,40,0,2*Math.PI);
  5. ctx.stroke();

Canvas 文本






















属性 描述
font 定义字体
fillText(text,x,y) 在 canvas 上绘制实心的文本
strokeText(text,x,y) 在 canvas 上绘制空心的文本

示例1:
使用 “Arial” 字体在画布上绘制一个高 30px 的文字(实心):

  1. var c=document.getElementById("myCanvas");
  2. var ctx=c.getContext("2d");
  3. ctx.font="30px Arial";
  4. ctx.fillText("Hello World",10,50);

示例2:
使用 “Arial” 字体在画布上绘制一个高 30px 的文字(空心):

  1. var c=document.getElementById("myCanvas");
  2. var ctx=c.getContext("2d");
  3. ctx.font="30px Arial";
  4. ctx.strokeText("Hello World",10,50);

Canvas 渐变

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


























方法 描述
createLinearGradient() 创建线性渐变
createRadialGradient() 创建放射状/环形的渐变
createPattern() 在指定的方向上重复指定的元素
addColorStop() 规定渐变对象中的颜色和停止位置

示例1:
创建一个线性渐变。使用渐变填充矩形:

  1. var c=document.getElementById("myCanvas");
  2. var ctx=c.getContext("2d");
  3. // 创建渐变
  4. var grd=ctx.createLinearGradient(0,0,200,0);
  5. grd.addColorStop(0,"red");
  6. grd.addColorStop(1,"white");
  7. // 填充渐变
  8. ctx.fillStyle=grd;
  9. ctx.fillRect(10,10,150,80);

示例2:
创建一个径向/圆渐变。使用渐变填充矩形:

  1. var c=document.getElementById("myCanvas");
  2. var ctx=c.getContext("2d");
  3. // 创建渐变
  4. var grd=ctx.createRadialGradient(75,50,5,90,60,100);
  5. grd.addColorStop(0,"red");
  6. grd.addColorStop(1,"white");
  7. // 填充渐变
  8. ctx.fillStyle=grd;
  9. ctx.fillRect(10,10,150,80);

发表评论

表情:
评论列表 (有 0 条评论,464人围观)

还没有评论,来说两句吧...

相关阅读

    相关 html5 canvas 标签

    anvas标签有两大作用,一是与 2d 的汇合,二是与3d的汇合,其中3d处使用的是 webgl 注意:webgl的y轴正方向由窗口的下方往上,而2d canvas的...

    相关 HTML标签canvas

    `<canvas>` 是一个可以使用脚本(通常为[JavaScript][])在其中绘制图形的 [HTML][] 元素.它可以用于制作照片集或者制作简单(也可以是不简单)的动画

    相关 HTML5】——Canvas

    Canvas是HTML5中所有新特性中目前应用最广泛的一个,可以替代引入的图片(图形) 用途:完成HTML页面中的图形绘制,实现网络游戏或单击游戏(网页游戏),在HTML中