Canvas基础篇:图形绘制

图形绘制

在之前的文章 Canvas基础篇:路径绘制 中,讲述了图形绘制的四个步骤以及图形开始路径、闭合路径、边框模式和填充模式。
本文将讲解在Canvas中,常见的几种图形绘制API。

moveTo()

moveTo():将笔触移动到指定的坐标 x 以及 y 上,该方法本身并不能画出任何东西,可以理解为在Canvas上绘图,需要落笔的起始位置。通常跟在 beginPath() 后面使用,或者在Canvas初始化时使用,其语法如下所示:

moveTo(x, y)

lineTo()

lineTo()方法用于绘制一条直线,其语法如下所示:

lineTo(x, y)

lineTo绘制一条直线

代码示例
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>绘制直线</title>
</head>

<body>
  <canvas id="canvas" width="400" height="400"></canvas>
  <script>
    const canvas = document.getElementById('canvas')
    const ctx = canvas.getContext('2d')
    ctx.beginPath();
    ctx.moveTo(50, 50)
    ctx.lineTo(100, 100)
    ctx.stroke()
  </script>
</body>

</html>
效果预览

绘制一条直线

lineTo绘制平行线

代码示例
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>绘制平行线</title>
</head>

<body>
  <canvas id="canvas" width="400" height="400"></canvas>
  <script>
    const canvas = document.getElementById('canvas')
    const ctx = canvas.getContext('2d')
    ctx.beginPath()
    ctx.moveTo(50, 50)
    ctx.lineTo(150, 50)
    ctx.stroke()
    ctx.beginPath()
    ctx.moveTo(50, 100)
    ctx.lineTo(150, 100)
    ctx.stroke()
  </script>
</body>

</html>
效果预览

平行线

lineTo绘制矩形

代码示例
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>绘制矩形</title>
</head>

<body>
  <canvas id="canvas" width="400" height="400"></canvas>
  <script>
    const canvas = document.getElementById('canvas')
    const ctx = canvas.getContext('2d')
    ctx.beginPath()
    ctx.moveTo(50, 50)
    ctx.lineTo(150, 50)
    ctx.lineTo(150, 100)
    ctx.lineTo(50, 100)
    ctx.lineTo(50, 50)
    ctx.stroke()
  </script>
</body>

</html>
效果预览

绘制矩形

arc()

arc()方法可以用来画一个圆或者画一个圆弧,,其语法如下所示:

arc(x, y, radius, startAngle, endAngle, anticlockwise)

其中,(x, y)代表圆心坐标;radius代表圆形半径;startAngle和endAngle分别代表起始角度和终止角度;anticlockwise取值为布尔值,用来标记是顺时针画圆还是逆时针画圆:值为true(默认值),表示顺时针;值为false表示逆时针。
注:startAngle和endAngle是以弧度为单位,如180°应该是Math.PI
度数到弧度的转换公式:
弧度 = 度数 ∗ M a t h . P I / 180 弧度 = 度数 * Math.PI / 180 弧度=度数Math.PI/180

arc绘制一个圆

代码实现
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>绘制圆</title>
</head>

<body>
  <canvas id="canvas" width="400" height="400"></canvas>
  <script>
    const canvas = document.getElementById('canvas')
    const ctx = canvas.getContext('2d')
    ctx.beginPath()
    ctx.arc(100, 100, 50, 0, 2 * Math.PI, true)
    ctx.fill()
  </script>
</body>

</html>
效果预览

圆

arc绘制一段弧

代码实现
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>绘制弧</title>
</head>

<body>
  <canvas id="canvas" width="400" height="400"></canvas>
  <script>
    const canvas = document.getElementById('canvas')
    const ctx = canvas.getContext('2d')
    ctx.beginPath()
    ctx.arc(100, 100, 50, 0, 90 * Math.PI / 180, false)
    ctx.closePath()
    ctx.stroke()
  </script>
</body>

</html>
效果预览

绘制弧

arcTo()

arcTo()也用于绘制一段圆弧,其效果和arc()相同,且官网并不推荐这个方法,因为在某些情况下,它可能并不可靠,所以本文不做讲解。

rect()

rect()方法用于绘制一个矩形,在 Canvas基础篇:绘制矩形 一文中讲述过,本文不再赘述。

曲线

圆弧是一种特殊的曲线,弧线上每一点的曲率都相同;曲线上每个点的曲率就不一定了。Canvas中有两种支持绘制曲线的方式:二次贝塞尔曲线和三次贝塞尔曲线,该内容在后面的文章中会详细讲解。

结语

本文主要介绍了Canvas中几种图形的绘制方式,包括直线、圆弧等。对于文章中错误的地方或者有任何问题,欢迎在评论区留言分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值