HTML HTML5 PHP Mysql Linux 缓存技术 工具 资讯 读书 其他

HTML5 画布(Canvas)


你的浏览器不支持 <canvas> 元素.

<canvas> 用于在网页中绘制图形.

左侧的例子展示了使用canvas绘制的如下图形:
一个红色矩形
渐变矩形
多色矩形
多色文本.



什么是Canvas?

HTML5 <canvas>元素用于绘制图形,使用脚本绘制(通常是JavaScript).

<canvas>元素只是一个图形容器.你必须使用脚本语言绘制图形.

Canvas有几个常用方法分别是画图、boxes, circles, text, 和 adding images.


浏览器支持

Internet Explorer Firefox Opera Google Chrome Safari

IE 9+, 火狐, 欧鹏, 谷歌, 和苹果浏览器支持<canvas>.

注意: IE8及更早版本不支持<canvas>元素.


创建一个Canvas

画布在页面中是个矩形的区域, 由<canvas> 元素指定.

注意: 默认情况下,<canvas>元素无边框无内容.

如下:

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

注意: 在画布中必须指定一个id属性(在脚本中调用), 并且定义宽高属性.

提示: 在同一个页面中你可以有多个<canvas>元素.

使用样式(style)属性添加边框:

例子

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

亲自试一试 »


使用JavaScript在画布是绘图

在画布上绘图必须内嵌JavaScript脚本:

例子

<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0,0,150,75);
</script>

亲自试一试 »

例子说明:

首选, 根据id找到<canvas> 元素:

var c = document.getElementById("myCanvas");

然后,调用Then, call its getContext() method (you must pass the string "2d" to the getContext() method):

var ctx = c.getContext("2d");

The getContext("2d") object is a built-in HTML5 object, with many properties and methods for drawing paths, boxes, circles, text, images, and more.

The next two lines draw a red rectangle:

ctx.fillStyle = "#FF0000";
ctx.fillRect(0,0,150,75);

The fillStyle property can be a CSS color, a gradient, or a pattern. The default fillStyle is #000000 (black).

The fillRect( x,y,width,height ) method draws a rectangle filled with the current fill style.


Canvas 坐标

canvas是一个二维网络.

画布左上角的坐标是 (0,0)

所以,上面的fillRect()的参数是 (0,0,150,75).

意思是说: 从左上角坐标 (0,0)开始画一个150x75 像素的矩形.

坐标例子

鼠标掠过下面矩形的可以查看x,y坐标:

X
Y

Canvas - 路径(Paths)

在画布中画一个直线, 我们可以使用如下方法:

  • moveTo( x,y ) 定义直线的起点
  • lineTo( x,y ) 定义直线的终点

通常画直线,我们必须使用"ink" 中的方法,如: stroke().

例子

定义直线的起点坐标(0,0), 和终点坐标(200,100). 然后使用 stroke() 方法画直线:

你的浏览器不支持HTML5的canvas标签.

JavaScript:

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

亲自试一试 »

在画布上画一个圆,我们使用如下方法:

  • arc(x,y,r,start,stop)

画圆我们需要使用"ink" 中的方法,如:stroke() 或 fill().

例子

使用arc()方法创建一个园:

你的浏览器不支持HTML5的canvas标签.

JavaScript:

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

亲自试一试 »


Canvas - 文本(Text)

在画布上添加文本, 最重要的属性和方法是:

  • font - 定义文本的字体
  • fillText( text,x,y ) - 在画布上添加文本"filled"
  • strokeText( text,x,y ) - 在画布上绘制文本 (没有填充)

使用fillText()方法:

例子

Write a 30px high filled text on the canvas, using the font "Arial":

你的浏览器不支持HTML5的canvas标签.

JavaScript:

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

亲自试一试 »

使用strokeText()方法:

例子

在画布上写一个30像素高的文本,使用"Arial"字体:

你的浏览器不支持HTML5的canvas标签.

JavaScript:

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

亲自试一试 »


Canvas - 渐变(Gradients)

渐变可用来填充矩形、圆形、直线、文本等.画布上的形状不仅限于固定颜色.

有两种不同的渐变:

  • createLinearGradient( x,y,x1,y1 ) - 创建一个线性渐变
  • createRadialGradient( x,y,r,x1,y1,r1 ) - 创建一个径向/圆形梯度

一旦我们有了渐变对象, 我们必须添加两种或两种以上颜色.

addColorStop()指定颜色起止及梯度位置. 梯度位置可以在0到1之间.

使用渐变, 需要设置fillStyle或strokeStyle属性, 然后画图形,如矩形、文本或直线.

使用createLinearGradient()方法:

例子

创建一个线性渐变。用渐变填充矩形:

你的浏览器不支持HTML5的canvas标签.

JavaScript:

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

// Create gradient
var grd = ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10,10,150,80);

亲自试一试 »

使用createRadialGradient()方法:

例子

Create a radial/circular gradient. Fill rectangle with the gradient:

你的浏览器不支持HTML5的canvas标签.

JavaScript:

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

// Create gradient
var grd = ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10,10,150,80);

亲自试一试 »


Canvas - 图片(Images)

在画布上画一个图片, 我们需要使用如下方法:

  • drawImage( 图片image,x坐标,y坐标 )

图像使用:

The Scream

例子

画出图像到画布上:

你的浏览器不支持HTML5的canvas标签.

JavaScript:

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

亲自试一试 »


HTML的<canvas>标签

标签 描述
<canvas> 用于绘制图形、动态,通过脚本绘制 (通常使用JavaScript)


To Top