Canvas没有circle函数来画一个圆。在Canvas绘图API中,提供了一个函数来绘制不同的弧,包括圆。arc函数可接受以下参数,具体说明参见表

把角度转换为弧度

arc函数使用的angle参数指的是radian(弧度)而不是degree(角度)。如果原来习惯于使用角度,那么就需要在把angle参数值传入arc函数之前将角度值转换成弧度值。可以用下面的公式来转换角度单位:

Radians = π/180 X degrees

下图用角度和弧度两种单位显示了一些常用的角度值。在Canvas中绘制圆弧时,该图指明了角度值的位置,还能帮助我们很容易地选择起点角度与终点角度参数

用arc函数绘制不同的圆弧

var canvas = document.getElementById('game');

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

ctx.filSytle = "rgba(200,200,100,0.6)";

//绘制下半圆

ctx.beginPath();

ctx.arc(100,110,50,0,Math.PI);

ctx.closePath();

ctx.fill();

//绘制上半圆

ctx.beginPath();

ctx.arc(100,90,50,0,Math.PI,true);

ctx.closePath();

ctx.fill();

//绘制左半圆

ctx.beginPath();

ctx.arc(230,100,50, Math.PI/2,Math.PI*3/2);

ctx.closePath();

ctx.fill();

//绘制右半圆

ctx.beginPath();

ctx.arc(250, 100, 50 , Math.PI*3/2, Math.PI/2);

ctx.closePath();

ctx.fill();

// 绘制一个接近于圆的形状

ctx.beginPath();

ctx.arc(180, 240, 50 , Math.PI*7/6, Math.PI*2/3);

ctx.closePath();

ctx.fill();

// 绘制一段小圆弧

ctx.beginPath();

ctx.arc(150, 250, 50 , Math.PI*7/6, Math.PI*2/3, true);

ctx.closePath();

ctx.fill();

我们已经在arc函数中使用不同startAngle和endAngle参数来绘制6个不同的圆弧形状。这些圆弧形状演示了arc函数是如何工作的。

让我们回头看一下角度与弧度之间的关系并关注于上半圆,上半圆开始于角度0并结束于角度π,并从逆时针方向绘制圆弧。如果我们看一下圆,它看起就下图这样的图形。

如果需要从210°开始到120°结束,顺时钟进行绘制,将会得到如下图所示的圆弧

将画圆功能封装成函数

将原来用来画圆的代码放到一个函数中,然后使用for循环在Canvas上随机绘制出5个圆

function drawCircle(ctx, x, y, radius) {

ctx.fillStyle = "rgba(200, 200, 100, .9)";

ctx.beginPath();

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

ctx.closePath();

ctx.fill();

}

$(function(){

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

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

var circleRadius = 10;

var width = canvas.width;

var height = canvas.height;

// random 5 circles

var circlesCount = 5;

for (var i=0;i

var x = Math.random()*width;

var y = Math.random()*height;

drawCircle(ctx, x, y, circleRadius);

}

});

在JavaScript中,可以使用Math.random()函数生成随机数。

random函数没有参数。它总是返回0~1之间的一个浮点数,这个数大于等于0且小于1。

有两种常用的方式来使用random函数。一种是在给定范围内生成随机数。另一种是生成true或false布尔值

C语言Arc函数画圆弧,用Canvas的arc函数绘制圆和图形相关推荐

  1. 圆弧的函数c语言,VC++中Arc函数画圆弧

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:VC++中Arc函数画圆弧回答:BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3 ...

  2. php网页画线,HTML5 canvas基本绘图之绘制线条

    是HTML5中新增的标签,用于绘制图形,这篇文章主要为大家详细介绍了HTML5 canvas基本绘图之绘制线条方法,感兴趣的小伙伴们可以参考一下 是HTML5中新增的标签,用于绘制图形,实际上,这个标 ...

  3. matlab一直系统函数画脉冲响应,MATLAB之使用 impz 函数计算并画出脉冲响应

    EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x ' C" [+ n1 g# Q- ]" A这篇在于讨论 impz 函数的使用. |9 u8 v8 }& ...

  4. 用python函数画德国国旗代码_用Python绘制一面国旗

    import turtle as tu tu.hideturtle() #隐藏海龟 tu.speed(10) tu.title("Chinese National Flag.") ...

  5. python画二维图_使用python绘制二维图形示例

    我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...

  6. Canvas学习:绘制圆和圆弧

    圆和圆弧是图形中基本图形之一,今天我们来了解在Canvas中怎么绘制圆和圆弧.在Canvas中绘制圆和圆弧其实和绘制线段和矩形一样的简单.在Canvas中,CanvasRenderingContext ...

  7. php画圆盘,用Canvas画个圆盘

    需求的来源通常是工作,这次要完成功能核心是一个向量图,嗯...其实就是一个定制化的仪表盘,换做平时一个上午就能搞定,只要数据给到顺手测试了就交货,但这次却有些不一样,这次要完成的,是一个微信小程序.嗯 ...

  8. C# 已知圆心和两点,用DrawArc()画圆弧(算法)

    (本文转载自)http://www.cnblogs.com/stalwart/archive/2010/12/06/1897636.html 如题,已经知道圆心和两点,画出两点间的圆弧,思路,先分别求 ...

  9. matlab中应用surf函数画球形物体的三维坐标变换,从球坐标系转换到笛卡尔坐标系

    在Matlab中采用surf函数画三维图时,该函数使用笛卡尔坐标系绘制图形,因此在某些球形图案的绘制中,直接使用(theta,phi,z)参数无法得到球形图案,需要将图案对应的点从球坐标转变为笛卡尔坐 ...

最新文章

  1. App项目实战之路(二):API篇
  2. 《LeetCode力扣练习》第121题 买卖股票的最佳时机 Java
  3. 面试官:知道时间轮算法吗?在Netty和Kafka中如何应用的?
  4. CSDN在文章头部添加目录
  5. web_安全_文件上传漏洞
  6. 同时启动多个Tomcat 和 Linux部署多个tomcat
  7. 学习环境配置:Manjaro、MSYS2以及常见软件
  8. iOS 系统级别录屏方式调研
  9. python 类创建
  10. 清北学堂2019.5.3
  11. 程序员如何探索新技术
  12. 计算机旅游网站毕业论文,旅游网站的设计与实现(毕业论文)
  13. 【C语言】【MPI】MPI编程入门详解
  14. 再读王垠的《编程的智慧》,有怎样的感想?
  15. oracle的floor用法,PLSQL FLOOR用法及代码示例
  16. mr time android 最新版,MR.TIME MAKER for Android Wear
  17. 鄂尔多斯人速看!除了放假通知,还有这几件大事正式执行!
  18. 用三国演义解读:责任链模式
  19. java.util.Arrays工具类的使用
  20. 火山安卓分割文本的使用

热门文章

  1. 从奶农倒奶看中国经济发展
  2. 破解索尼PS4系列:用户代码执行(二)
  3. [wp7软件]wp7~~各种视频播放器下载大全
  4. 优化命令之vmstat——监控虚拟内存、进程、cpu
  5. 计算机一级自动筛选怎么做,Excel自动筛选小技巧
  6. mysql函数在where后使用_【MYSQL函数】MYSQL中IF函数在where中的使用
  7. 记录一下Java访问https服务出现的异常情况
  8. 深圳物联网培训:要想成为一名物联网工程师,需要学习哪些知识?
  9. 简道云教学 | 零代码应用开发软件助力应用型高校学生创新能力培养
  10. Blog5 无监督深度关键短语生成——关键代码分析3