在html5中,CanvasRenderingContext2D对象也提供了专门用于绘制圆形或弧线的方法,请参考以下属性和方法介绍:

JavaScript Code复制内容到剪贴板

arc(x, y, radius, startRad, endRad, anticlockwise)

在canvas画布上绘制以坐标点(x,y)为圆心、半径为radius的圆上的一段弧线。这段弧线的起始弧度是startRad,结束弧度是endRad。这里的弧度是以x轴正方向(时钟三点钟)为基准、进行顺时针旋转的角度来计算的。anticlockwise表示是以逆时针方向还是顺时针方向开始绘制,如果为true则表示逆时针,如果为false则表示顺时针。anticlockwise参数是可选的,默认为false,即顺时针。

arc()方法中的弧度计算方式

JavaScript Code复制内容到剪贴板

arcTo(x1, y1, x2, y2, radius)

这个方法将利用当前端点、端点1(x1,y1)和端点2(x2,y2)这三个点所形成的夹角,然后绘制一段与夹角的两边相切并且半径为radius的圆上的弧线。一般情况下,绘制弧线的开始位置是当前端点,结束位置是端点2,并且弧线绘制的方向就是连接这两个端点的最短圆弧的方向。此外,如果当前端点不在所指定的圆上,本方法还将绘制一条从当前端点到弧线起点的直线。

由于详细介绍arcTo()方法的篇幅较多,请移步至这里查看arcTo()的详细用法。

在了解了canvas绘制弧线的上述API之后,我们就一起来看看如何使用arc()绘制弧线。我们已经知道,arc()接收的第4个和第5个参数表示绘制弧线的开始弧度和结束弧度。相信各位读者在学校的数学或几何课程上都学过弧度,弧度是一种角度单位。弧长等于半径的弧,其所对的圆心角就是1弧度。我们还知道,半径为r的圆,其周长为2πr。在具备这些几何知识的前提下,我们就可以使用arc()方法绘制弧线了。

使用canvas绘制弧线

现在,我们就来绘制一条半径为50px的圆的1/4弧线。

JavaScript Code复制内容到剪贴板

HTML5 Canvas绘制弧线入门示例

您的浏览器不支持canvas标签。

//获取Canvas对象(画布)

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

//简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误

if(canvas.getContext){

//获取对应的CanvasRenderingContext2D对象(画笔)

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

//开始一个新的绘制路径

ctx.beginPath();

//设置弧线的颜色为蓝色

ctx.strokeStyle = "blue";

var circle = {

x : 100,    //圆心的x轴坐标值

y : 100,    //圆心的y轴坐标值

r : 50      //圆的半径

};

//沿着坐标点(100,100)为圆心、半径为50px的圆的顺时针方向绘制弧线

ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI / 2, false);

//按照指定的路径绘制弧线

ctx.stroke();

}

对应的显示效果如下图:

使用canvas沿着顺时针方向绘制弧线

如上所示,我们设置了绘制的弧线的所在圆的圆心坐标为(100,100),半径为50px。由于一个半径为r的圆的周长为2πr,也就是说,一个完整的圆,其所对应的弧度为2π(换算成常规角度就是360°),所以我们想要画一个圆的1/4弧线,只要弧度为π/2(即90°)就可以了。在上面的代码中,我们使用了JavaScript中表示π的常量Math.PI。

此外,在上面的代码中,我们还设置了绘制弧线的方向为顺时针方向(false)。由于起始弧度为0,结束弧度为π/2,因此弧线将从x轴的正方向开始沿着顺时针方向绘制,从而得到上面的图形。如果我们将上述代码中的弧线绘制方向改为逆时针,会有什么样的效果呢?

JavaScript Code复制内容到剪贴板

//获取Canvas对象(画布)

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

//简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误

if(canvas.getContext){

//获取对应的CanvasRenderingContext2D对象(画笔)

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

//开始一个新的绘制路径

ctx.beginPath();

//设置弧线的颜色为蓝色

ctx.strokeStyle = "blue";

var circle = {

x : 100,    //圆心的x轴坐标值

y : 100,    //圆心的y轴坐标值

r : 50      //圆的半径

};

//沿着坐标点(100,100)为圆心、半径为50px的圆的逆时针方向绘制弧线

ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI / 2, true);

//按照指定的路径绘制弧线

ctx.stroke();

}

对应的显示效果如下:

使用canvas沿着逆时针方向绘制弧线

使用canvas绘制圆形

当我们学会了绘制弧线之后,举一反三,我们想要绘制圆形自然也不在话下,只需要将上述代码的结束弧度改为2π即可。

JavaScript Code复制内容到剪贴板

//获取Canvas对象(画布)

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

//简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误

if(canvas.getContext){

//获取对应的CanvasRenderingContext2D对象(画笔)

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

//开始一个新的绘制路径

ctx.beginPath();

//设置弧线的颜色为蓝色

ctx.strokeStyle = "blue";

var circle = {

x : 100,    //圆心的x轴坐标值

y : 100,    //圆心的y轴坐标值

r : 50      //圆的半径

};

//以canvas中的坐标点(100,100)为圆心,绘制一个半径为50px的圆形

ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, true);

//按照指定的路径绘制弧线

ctx.stroke();

}

对应的显示效果如下:

2016314114412878.png (423×312)

JavaScript Code复制内容到剪贴板

//获取Canvas对象(画布)

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

//简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误

if(canvas.getContext){

//获取对应的CanvasRenderingContext2D对象(画笔)

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

//开始一个新的绘制路径

ctx.beginPath();

//设置弧线的颜色为蓝色

ctx.strokeStyle = "blue";

var circle = {

x : 100,    //圆心的x轴坐标值

y : 100,    //圆心的y轴坐标值

r : 50      //圆的半径

};

//以canvas中的坐标点(100,100)为圆心,绘制一个半径为50px的圆形

ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, true);

//按照指定的路径绘制弧线

ctx.stroke();

}

备注:arc()方法中的起始弧度参数startRad和结束弧度参数endRad都是以弧度为单位,即使你填入一个数字,例如360,仍然会被看作是360弧度。将上述代码的结束弧度设为360会产生什么用的后果呢?这就要看绘制的方向了(即anticlockwise参数的值),如果是顺时针绘制(false),则将绘制出一个完整的圆形;如果是逆时针绘制,大于2π的弧度将被转换为一个弧度相等、但不大于2π的弧度。例如,将上述代码中的结束弧度设为3π(Math.PI * 3),如果anticlockwise为false,将会显示为一个完整的圆形,如果为true,则其显示效果与设为π时的显示效果一致。

结束弧度设为3π时,顺时针(false)旋转的绘制效果

结束弧度设为3π时,逆时针(true)旋转的绘制效果

html绘制圆形和弧形的代码,通过HTML5 Canvas API绘制弧线和圆形的教程相关推荐

  1. 29行代码使用HTML5 Canvas API绘制一颗红心

    源代码: <html><div style="width:200px;height:200px;"id="cloud">test can ...

  2. clear html5代码,用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能

    在现实世界中,我们使用画笔在画板上进行绘画:在html5 canvas中,我们同样可以使用canvas的画笔--CanvasRenderingContext2D对象在canvas上进行绘画.众所周知, ...

  3. html五绘制弧线的方法是,使用HTML5 Canvas API绘制弧线的教程

    绘制标准圆弧 在开始之前,我们优化一下我们的作图环境.灵感来自于上节课的纹理,如果不喜欢这个背景,我在images目录下还提供了其他的背景图,供大家选择.另外把所有的样式表都写在了 下.JavaScr ...

  4. html绘制动态小人,JavaScript和html5 canvas如何绘制一个小人的代码

    这篇文章主要介绍了JavaScript+html5 canvas绘制的小人效果,涉及JavaScript结合html5 canvas图形绘制及颜色随机填充的技巧,需要的朋友可以参考下 本文实例讲述了J ...

  5. HTML1个像素宽的代码,HTML5 Canvas中绘制一个像素宽的细线实现代码详情

    正统的HTML5 Canvas中如下代码ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(10, 100); ctx.lineTo(300,100); ct ...

  6. html坐标绘制路径,HTML5 CANVAS:绘制路径

    一条HTML5 canvas路径是通过绘制指令来连接一系列的点,由这一系列的点构成直线或曲线.路径可以用于在HTML5 canvas上绘制各种类型的图形:直线.圆形.多边形等等.路径的绘制是canva ...

  7. HTML5 学习手笔二:canvas API 绘制树形图案A

    上篇通过对canvas 画对角线,了解了一些canvas画图基本原理.现在可以利用HTML5 canvas API创建一个场景:带有长跑跑道的树林. 本篇大纲 用canvas API绘制树木的树冠 为 ...

  8. html5canvas绘制图片源码,HTML5 CANVAS:绘制图片

    HTML5 CANVAS:绘制图片 通过前面的学习,我们现在已经可以在HTML5 canvas中绘制图形和文字,并给它们设置一些样式.我们还可以在中绘制图片.用于在作为绘制源的图片可以是下面的几种元素 ...

  9. 前端html生成图片,HTML5 Canvas:绘制图片

    通过前面的学习,我们现在已经可以在HTML5 canvas中绘制图形和文字,并给它们设置一些样式.我们还可以在中绘制图片.用于在作为绘制源的图片可以是下面的几种元素类型: HTMLImageEleme ...

最新文章

  1. 学生用计算机2ndf,手机计算器2ndf键在哪 等同于INV键
  2. 前端趋势榜:上周最有意思、又实用的 10 大 Web 项目 - 210821
  3. java程序math包没有_java.math包应用
  4. WSL安装xfce4
  5. 快速入门:OpenShift上的Spring Boot和WildfFly 8.2
  6. 在running android lint期间发生了内部错误.,Eclipse出现quot;Running Android Lint has encountered a problemquot...
  7. 以DES的方式实现对称加密,并提供密钥
  8. Part 2: Containers
  9. SAStruts アクションにJSONを返すメソッドを作成してみる
  10. mysql 插入汉字出现问号 解决方法
  11. 腾讯2018春招笔试题,翻转数列
  12. Python基础语法知识1
  13. 配电网PMU优化配置与状态估计(Matlab代码实现)
  14. 知乎高赞:无人驾驶什么时候才会凉凉,估计还要多久?
  15. 明瞳智控全新升级,助力终端设备便捷上云
  16. R语言学习之正则化表达式
  17. JetBrains IDE Support的安装
  18. Google Earth Engine(GEE)——图像位移与配准!
  19. Android代码规范_持续更新
  20. HSIC Bottleneck的C++程序实现

热门文章

  1. 进程与线程 thread (二)——线程概念
  2. C基础(31——35)
  3. json格式的字符串转为json对象遇到特殊字符问题解决
  4. Oracle中快速查找锁与锁等待
  5. textarea 自适应窗口|IE、firefox 显示同样的效果
  6. python pymysql 多线程 读写数据库 报错 Packet sequence number wrong
  7. mysql 常用sql语句 简介
  8. docker 挂载主机目录访问报错Permission denied 解决办法
  9. docker stats 实时统计 资源 内存 cpu
  10. python3 转换json数据的单引号双引号注意点