当前位置: 首页 > 工具软件 > Ink-Canvas > 使用案例 >

HTML5基础教程(4)Canvas

杨良平
2023-12-01

导语

上一篇文章中我们讲了HTML5中新的元素及其描述,本篇文章中我们将讲述有关HTML5 Canvas的知识点。

什么是 Canvas?

在网页上绘制图形就需要用到Canvas元素。一些图表和图像也能够使用Canvas绘制。HTML5的Canvas使用JavaScript,在一个名为画布的矩形区域内绘制图形,< canvas >标签仅作为图形容器。用户可以在画布中控制每一个像素点。它拥有丰富多彩的绘制图形、添加图像的方法

如何创建Canvas元素

下面的例子将展示如何在HTML5页面中添加Canvas元素,并规定元素的id、宽度与高度:

<canvas id="myCanvas" width="200" height="100"></canvas>

还请注意:标签通常需要定义一个id属性,以方便供脚本引用,width与height定义画布的宽度与高度,即画布的大小。你可以在页面中定义多个canvas元素。使用style属性可以用来添加边框。

尝试使用 JavaScript 来绘制图像

canvas元素本身只是一个图形容器,没有绘制功能,所以我们需要借助JavaScript来完成绘制工作:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#00FFCC";
ctx.fillRect(0,0,150,75);

首先找到canvas元素并创建context对象,getContext(“2d”)对象是内部创建的HTML5对象。它有着多种多样的绘制路径、图形、字符与添加图像的方法。
设置fillStyle属性可以是css颜色,渐变或者图案。它的默认设置是黑色即 #000000,fillRect(x,y,width,height) 方法定义了矩形当前的填充方式。
上边的例子中,

ctx.fillStyle=“#00FFCC”;
ctx.fillRect(0,0,150,75);

这两行代码作用是绘制一个薄荷绿色的矩形,至于下面的坐标,这是下一小节讲述的内容。

Canvas - 坐标

canvas 是一个二维网格。左上角的坐标为 (0,0)
上面的例子中,fillRect 方法拥有参数 (0,0,150,75)。
通俗来讲就是在画布上绘制 一个150x75 的矩形,从左上角(0,0)开始 。

Canvas - 路径

在canvas中绘制线段,我们会使用以下方法:
1.moveTo(x,y) 定义线条开始坐标
2.lineTo(x,y) 定义线条结束坐标
绘制线条需要使用到ink

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

在canvas中绘制图形,我们使用下列方法(以圆形为例):

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

除了arc(),我们在绘制圆形时还用到了ink中的sreoke()或者fill()

Canvas - 文本

绘制文本时,重要的属性与方法如下列所示

方法功能
font字体的定义
fillText(text,x,y)在 canvas 上绘制实心的文本
strokeText(text,x,y)在 canvas 上绘制空心的文本

使用 fillText(),用Arial字体在画布上绘制30px高的文字(实心):

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

使用 fillText(),用Arial字体在画布上绘制30px高的文字(空心)

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

Canvas - 渐变

渐变可以填充在矩形, 圆形, 线条, 文本等等, 各种形状与颜色可以自己定义。
以下有两种不同的方式来设置Canvas渐变:
1.createLinearGradient(x,y,x1,y1) - 创建线条渐变
2.createRadialGradient(x,y,r,x1,y1,r1) - 创建一个径向/圆渐变
当我们使用渐变对象,必须使用两种或两种以上的停止颜色。
addColorStop()方法指定颜色停止,参数使用坐标来描述,可以是0至1。
使用渐变,设置fillStyle或strokeStyle的值为 渐变,然后绘制形状,如矩形,文本,或一条线。
线性渐变:

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

径向/圆渐变:

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

Canvas - 图像

把一幅图像放置到画布上, 使用以下方法:

drawImage(image,x,y)

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("zyf");
ctx.drawImage(img,10,10);

结尾

我们这此仅介绍了canvas的基础用法,其他进阶用法读者可以参考开发手册,上面有标签的完整属性介绍。

 类似资料: