【HTML5】 canvas 绘制图形

本文详细介绍了如何在HTML5中使用CanvasAPI进行图形绘制,包括基本用法、context对象的属性和方法(如绘制线条、矩形、圆形、文本,以及填充和描边),以及填充图像的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本用法

  • canvas 标签:可用于在网页上绘制图形(使用 JavaScript 在网页上绘制图像)
  • 画布是一个矩形区域,通过控制其每一像素绘制路径、矩形、圆形、字符以及添加图像。
  • 创建一个canvas:width 和 height 是必备属性,id 是为了在 js 中获取改元素。
<canvas id="myCanvas" width="200" height="100"></canvas>
  • 在 js 中绘制 canvas
<script type="text/javascript">
// 通过 id 查找到 canvas 元素
var c = document.getElementById("myCanvas");
// 创建 context 对象
var cxt = c.getContext("2d");
// 绘制矩形(前2个参数为在canvas里面的矩形左上角起点坐标,第3个参数是宽,第4个参数是高)
cxt.fillRect(0,0,150,75);
// 填充颜色
cxt.fillStyle="#FF0000";
</script>

二、用法详见

2.0、方法属性

  • context 对象属性
属性描述
fillStyle设置或返回用于填充绘图的颜色、渐变或图案。
strokeStyle设置或返回用于笔划的颜色、渐变或图案。
shadowColor设置或返回用于阴影的颜色。
shadowBlur设置或返回阴影的模糊级别。
shadowOffsetX设置或返回阴影到形状的水平距离。
shadowOffsetY设置或返回阴影到形状的垂直距离。
  • context 对象方法
方法描述
fill()填充当前图形(路径)。
stroke()实际上绘制您定义的路径。
beginPath()开始路径,或重置当前路径。
closePath()创建从当前点返回起点的路径。

2.1、绘制线条

  • 线条方法
方法描述绘制
moveTo()划线起始点
lineTo()画线到另一个点
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"></canvas>
<script type="text/javascript">
// 通过 id 查找到 canvas 元素
var c = document.getElementById("myCanvas");
// 创建 context 对象
var cxt = c.getContext("2d");
// 线条起点坐标
cxt.moveTo(10,10);
// 折点坐标
cxt.lineTo(150,50);
// 折点坐标
cxt.lineTo(10,50);
// 绘制当前或已经存在的路径的方法
cxt.stroke();
</script>

在这里插入图片描述

  • 专有属性
属性描述
lineWidth绘制时要使用的线条宽度像素
lineCap定义线的端部样式round(圆形) square(方形)、butt(平直,默认值)
lineJoin设置或返回两条线相交时创建的角的类型bevel(斜角)、round(圆角) miter(尖角,默认值)
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(200, 100);
ctx.lineWidth = 10;
ctx.strokeStyle = "red";
ctx.lineCap = "round";
ctx.stroke();

2.2、绘制矩形

  • fillRect() 方法:向路径添加一个填充的矩形 context.fillRect(x, y, width, height)
  • strokeRect() 方法:向路径添加一个无填充矩形 context.fillRect(x, y, width, height)
  • rect() 方法:向路径添加一个矩形 context.rect(x, y, width, height)
1. strokeRect(30, 30, 50, 50) 
等价于:
	ctx.rect(30, 30, 50, 50);
	ctx.stroke();
2. fillRect(30, 30, 50, 50) 
等价于:
	ctx.rect(30, 30, 50, 50);
	ctx.fill();
参数描述
x矩形左上角的 x 坐标。
y矩形左上角的 y 坐标。
width矩形的宽度,以像素为单位。
height矩形的高度,以像素为单位。
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

// 红色矩形
ctx.beginPath();
ctx.lineWidth = "6";
ctx.strokeStyle = "red";
ctx.fillStyle = "yellow"	// 在 strokeRect 中不生效
ctx.strokeRect(5, 5, 290, 140);

// 绿色矩形
ctx.beginPath();
ctx.lineWidth = "4";		// 在 fillRect 中不生效
ctx.strokeStyle = "green";	// 在 fillRect 中不生效
ctx.fillStyle = "yellow"
ctx.fillRect(30, 30, 50, 50);

在这里插入图片描述

2.3、绘制圆形

  • arc() 方法:向路径添加一个圆形 context.arc(x,y,r,start,end)
参数描述
x圆心的x轴坐标
y圆心的y轴坐标
r圆弧的半径
start圆弧的起始点
end圆弧的终点
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"></canvas>
<script type="text/javascript">
// 通过 id 查找到 canvas 元素
var c = document.getElementById("myCanvas");
// 创建 context 对象
var cxt = c.getContext("2d");
// 填充颜色
cxt.fillStyle="#FF0000";
// 创建一个新的路径
cxt.beginPath();
// 绘制圆弧路径的方法(圆心的x轴坐标,圆心的y轴坐标,圆弧的半径,圆弧的起始点,圆弧的终点,true逆时针绘制圆弧false顺时针绘制)
cxt.arc(70,18,15,0,Math.PI*2,true);
// 返回到当前路径起始点的方法
cxt.closePath();
// 填充当前或已存在的路径的方法
cxt.fill();
</script>

在这里插入图片描述

2.4、绘制文本

  • fillText(text,x,y):在画布上绘制“填充的”文本
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.font = "30px Arial";
ctx.fillText("Hello World", 10, 50);

在这里插入图片描述

  • strokeText(text,x,y):在画布上绘制文本(无填充)
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");

ctx.font = "30px Arial";
ctx.strokeText("Hello World", 10, 50);

在这里插入图片描述

  • 专有属性:
属性描述
font设置或返回文本内容的当前字体属性。
textAlign设置或返回文本内容的当前对齐方式。
textBaseline设置或返回绘制文本时使用的当前文本基线。
  • font 属性:使用的语法与 CSS font 属性相同。

  • textAlign 属性
    在这里插入图片描述

描述
start默认。文本在指定的位置开始。
end文本在指定的位置结束。
center文本的中心被放置在指定的位置。
left文本左对齐。
right文本右对齐。
  • textBaseline 属性
    在这里插入图片描述
描述
alphabetic默认。文本基线是普通的字母基线。
top文本基线是 em 方框的顶端。
hanging文本基线是悬挂基线。
middle文本基线是 em 方框的正中。
ideographic文本基线是表意基线。
bottom文本基线是 em 方框的底端。

2.5、填充图像

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"></canvas>
<script type="text/javascript">
// 通过 id 查找到 canvas 元素
var c = document.getElementById("myCanvas");
// 创建 context 对象
var cxt = c.getContext("2d");
var img = document.getElementById("scream");
// 放置图片 (图片,image的左上角在目标画布上X轴坐标,image的左上角在目标画布上Y轴坐标)
ctx.drawImage(img, 10, 10)
</script>
简介: 新的 HTML5 规范旨在帮助开发人员更轻松的编写出各类 Web 应用,以顺应当前 SaaS,云计算以及 RIA 等技术的最新趋势。在 HTML5 得以广泛推广之前,开发人员通常使用 SVG,VML 等技术进行 Web 绘图操作,但这些基于 XML 的绘图语言声明式的绘图方式并不能满足复杂绘图操作在性能上的需求,比如 Web 游戏所需要的像素级别的绘图能力。HTML5 canvas 元素的出现填补了这种不足,开发人员可以使用 JavaScript 脚本语言在 canvas 中进行一系列基于命令的图形绘制操作,本文将通过讲解如何使用 canvas 元素进行基本绘图操作,以及完成简单的动画和用户交互任务,阐明 canvas 在帮助构建 Web 图形类应用时所能够提供的能力。更多html5相关信息请关注html5中国:http://www.html5cn.org 背景介绍 HTML5 中新引入的 canvas 元素使得 Web 开发人员在无须借助任何第三方插件(如 Flash,Silverlight)的情况下,可以直接使用 JavaScript 脚本在 Web 页面进行绘图。它首次由苹果公司的 Webkit 框架引入实现,并成功运用在 Safari 浏览器中,读者在 这里可以体验到基于 canvas 的精彩示例。目前,canvas 已成为 HTML5 规范中的事实性标准,并且已经被 Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera10.0+ 等浏览器所支持。最近(本文撰写之时),IE 也正式宣称将在其 9.0 版本之后,开始对 canvas 元素进行支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗不甘坠落的流星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值