HTML5画布(canvas)绘制图形

本文详细介绍了HTML5 canvas元素的使用,包括如何绘制线条、矩形、三角形、圆形、椭圆以及利用坐标画虚线,提供了一系列的示例代码,帮助开发者掌握canvas图形绘制。

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

<canvas>标签

canvas 元素用于在网页上绘制图形

canvas 是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形。

默认情况下它在网页上是一块空白区域,默认大小300*150

注意:canvas画布默认背景色为透明色,可以自行定义背景色

使用html5的<canvas>标签在网页中创建一个画布,语法格式如下:

<canvas id="canvas" width="500" height="500">
     您的浏览器版本太低,不支持画布,请更新浏览器
</canvas>

1.1 绘制线条

图形的基本元素是路径。路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合。

步骤 :

  1. 获取一个画布(要创建一个画布对象)
  2. 创建一个画布上下文对象

  3. 绘制图形的起始点(坐标)

  4. 绘制图形的连接点

  5. 闭合路径

  6. 设置图形的样式

  7. 描边

 例图:  

  示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <canvas id="canvas" width="500" height="500">
        您的浏览器版本太低,不支持画布,请更新浏览器
    </canvas>
    <script type="text/javascript">
        // 1.获取一个画布(要创建一个画布对象)
        var canvas = document.getElementById("canvas");
        // 2.创建一个画布上下文对象
        var context = canvas.getContext("2d");
        // 3.告诉程序绘画路径开始
        context.beginPath();
        // 4.绘制图形的起始点(坐标)
        context.moveTo(0,0);
        // 5.绘制图形的连接点
        context.lineTo(100,100);
        context.closePath();// 闭合路径
        // 6.设置图形的样式
        context.strokeStyle="red";
        // 7.描边
        context.stroke();
        context.fillStyle="red";// 设置要给图形填充的颜色
        context.fill();// 填充
    </script>
</body>
</html>

 1.2 canvas 绘制矩形

<canvas>共提供了三种矩形绘制方法

  • fillReac(x, y, width, height) // 绘制填充矩形
  • strokeRect(x, y, width, height) // 绘制矩形边框
  • clearRect(x, y, width, height) // 清除矩形区域

例图: 

 示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <canvas id="canvas" width="500" height="500">
        您的浏览器版本太低,不支持画布,请更新浏览器
    </canvas>
    <script type="text/javascript">
        // 1.获取一个画布(要创建一个画布对象)
        var canvas = document.getElementById("canvas");
        // 2.创建一个画布上下文对象
        var context = canvas.getContext("2d");
        // 3.调用一个画矩形的函数fillRect(x,y,width,height)
        context.fillStyle="red";
        context.fillRect(0,0,200,100);
        context.strokeStyle="red";
        context.strokeRect(0,0,200,100);
        //  context.clearRect(10,10,20,20);// 给定的矩形内清除指定的像素
    </script>
</body>
</html>

1.3 canvas 绘制三角形 

beginPath() // 新建路径
moveTo(x, y) // 移动笔触,以此为路径起点
lineTo(x, y) // 绘制直线路径
closePath() // 闭合路径
stroke() // 将绘制的路径画出来,不会自动闭合路径
fill() // 将绘制的路径画出来并实心填充路径内部,若路径未闭合将自动连接起点和终点

例图:

实例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <canvas id="canvas" width="500" height="500">
        您的浏览器版本太低,不支持画布,请更新浏览器
    </canvas>
    <script type="text/javascript">
        // 1.获取一个画布(要创建一个画布对象)
        var canvas = document.getElementById("canvas");
        // 2.创建一个画布上下文对象
        var context = canvas.getContext("2d");
        // 3.告诉程序绘画路径开始
        context.beginPath();
        // 4.绘制图形的起始点(坐标)
        context.moveTo(0,0);
        // 5.绘制图形的连接点
        context.lineTo(0,100);
        context.lineTo(100,100);
        context.closePath();// 闭合路径
        // 6.设置图形的样式
        context.strokeStyle="red";
        // 7.描边
        context.stroke();
        context.fillStyle="red";// 设置要给图形填充的颜色
        context.fill();// 填充
    </script>
</body>
</html>

1.4 canvas 绘制圆形

arc(x, y, radius, startAngle, endAngle, anticlockwise) // 绘制圆弧路径

  • (x, y):圆心,radius:半径,startAngle:起始弧度,endAngle:结束弧度,
  • anticlockwise:布尔值,false为顺时针绘制,true为逆时针绘制,默认为false顺时针

注意:方法内用的是弧度而不是角度,换算方法为弧度 = 角度 / 180 * Math.PI

例图:

 

实例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <canvas id="cavsElem" width="900" height="600">
        您的浏览器不支持,请升级浏览器
    </canvas>
    <script>
        var context = document.getElementById('cavsElem').getContext('2d'); //获得上下文
        var canvas = document.getElementById('cavsElem');
        context.beginPath();//开始路径
        context.arc(200, 200, 200, 0, 2 * Math.PI, true); //会致圆形,true为逆时针
        context.closePath(); //关闭路径
        context.fillStyle = 'antiquewhite';//设置填充颜色
        context.fill(); //填充
        //绘制弧形
        context.beginPath();//开始路径
        context.strokeStyle = "#fff"; //设置描边颜色
        // context.lineWidth=5; //设置线的粗细
        context.arc(120, 100, 25, Math.PI, 5 * Math.PI, false); //绘制弧形
        context.closePath(); //关闭路径
        context.fillStyle = 'black';//设置填充颜色
        context.fill(); //填充
        context.stroke(); //描边
        //绘制弧形
        context.beginPath();//开始路径
        context.strokeStyle = "#bbb"; //设置描边颜色
        // context.lineWidth=5; //设置线的粗细
        context.arc(270, 100, 25, Math.PI, 5 * Math.PI, false); //绘制弧形
        context.closePath(); //关闭路径
        context.fillStyle = 'black';//设置填充颜色
        context.fill(); //填充
        context.stroke(); //描边
        //绘制弧形
        context.beginPath();//开始路径
        context.strokeStyle = "#fff"; //设置描边颜色
        context.lineWidth = 5; //设置线的粗细
        context.arc(200, 260, 80, Math.PI / 6.5, 5 * Math.PI / 6, false); //绘制弧形
        context.stroke(); //描边
    </script>
</body>
</html>

1.5 canvas 绘制椭圆

ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) // 绘制椭圆路径

参数的意思:(起点x.起点y,半径x,半径y,旋转的角度,起始角,结果角,顺时针还是逆时针)

例图:=

 实例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>绘制圆形</title>
</head>
<body>
    <canvas id="canvas" height="500" width="500px">
        您的浏览器版本太低,不支持画布,请更新浏览器
    </canvas>
    <script type="text/javascript">
        // 1.获取画布(创建一个画布对象)
        var canvas = document.getElementById("canvas");
        // 2.创建一个画布上下文
        var context = canvas.getContext("2d");
        // 绘制椭圆
        context.ellipse(100,100,100,30,0,0,Math.PI*2);
        context.stroke();
    </script>
</body>
</html>

1.6 利用坐标画虚线

lineWidth=2;//设置线的粗细

例图:

实例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>利用坐标画虚线</title>
</head>
<body>
    <canvas id="canvas">
        您的浏览器版本太低,不支持画布,请更新浏览器
    </canvas>
    <script type="text/javascript">
        // 1.获取画布(创建一个画布对象)
        var canvas = document.getElementById("canvas");
        // 2.创建一个画布上下文
        var context = canvas.getContext("2d");
        // 3.开始路径
        context.beginPath();
        // 4.设置起始点(坐标)
        // context.beginPath();
        // context.setLineDash([10,20,5]);// 设置的是虚线的呈现方式
        // context.moveTo(0,0);
        // context.lineTo(300,0);
        // context.lineWidth=5;
        // context.stroke();
        // 使用循环:做重复的事情
        for(var i=0;i<30;i++){
            context.beginPath();
            context.moveTo(10*i,0);
            context.lineTo(10*i+5,0);
            context.closePath();
            // 设置样式
            context.lineWidth=5;
            // 描边
            context.stroke();
        }
    </script>
</body>
</html>

 

简介: 新的 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值