1.绘制圆弧轨迹

  • 相关语法:ctx.arc(x,y,r,startRadian,endRadian,direction),前5个参数必填:
参数 说明
x 圆心x轴坐标
y 圆心y轴坐标
r 半径大小
startRadian 起始弧度(单位Math.PI)
endRadian 结束弧度(单位Math.PI)
direction 绘制方向(可选),默认false顺时针方向,true为逆时针
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //圆心坐标50,50
//半径100
//起始弧度和结束弧度为0,PI/2
ctx.arc(50,50,100,0,Math.PI/2)
//描边
ctx.stroke() //开启新路径
ctx.beginPath()
//绘制新弧度(逆时针绘制)
ctx.arc(250,200,100,0,Math.PI/2,true)
//描边
ctx.stroke()
</script>

  • 注意:这个语法只是绘制轨迹,需要自己描边或者填充

2.绘制扇形

  • 思路:通过将绘制的圆弧与圆心连接起来即可绘制出一个扇形
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //设置圆心坐标和半径
var x=150,y=80,r=150
//设置起始弧度和结束弧度
var startRadian = 0
var endRadian = Math.PI/4*3
//绘制基于此圆心的圆弧
ctx.arc(x,y,r,startRadian,endRadian)
//连接圆心
ctx.lineTo(x,y)
//关闭路径
ctx.closePath()
//描边
ctx.stroke()
//设置填充颜色
ctx.fillStyle = "lightBlue"
//填充
ctx.fill()
</script>

3.根据数据绘制饼图

  • 实例:用饼图展现出每个年龄段的人群比例
  • 数据来源:每个年龄区间的人数由随机数产生,通过数组下标来匹配对应的填充颜色
  • 思路:计算每个区间所占的角度大小,后一个区间的起始弧度为上一个区间的结束弧度
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d") //定义可能的颜色值
var colorArr = ["red","blue","green","yellow"] //16-22的年龄人数
//23-30的年龄人数
//31-35的年龄人数
//36及以上的年龄人数
var section = [0,0,0,0]
//模拟数据(产生50个数据)
var num = 50
for(var i=0;i<num;i++){
//随机产生16-40的整数
var age = Math.floor(16 + Math.random()*25)
if(age < 23){
section[0]++
}else if(age < 31){
section[1]++
}else if(age < 36){
section[2]++
}else{
section[3]++
}
} //记录每个区间所占的弧度
var radian = []
for(var i=0;i<section.length;i++){
//计算弧度并添加到数组中
radian.push(section[i]/num * Math.PI*2)
} //设置圆心和半径
var x = canvas.width/2
var y = canvas.height/2
var r = 100 //定义起始弧度和结束弧度
var startRadian = 0
var endRadian = 0 //依次绘制每个扇形
for(var i=0;i<radian.length;i++){
//计算结束弧度
endRadian = startRadian + radian[i]
//开启新路径
ctx.beginPath()
//绘制圆弧轨迹
ctx.arc(x,y,r,startRadian,endRadian)
//连接圆心
ctx.lineTo(x,y)
//关闭路径
ctx.closePath()
//设置填充颜色
ctx.fillStyle = colorArr[i]
//填充
ctx.fill() //更新开始弧度
startRadian = endRadian
}
</script>

canvas(四)绘制曲线的更多相关文章

  1. Canvas:绘制曲线

    前言 画曲线要用到二次贝塞尔曲线或三次贝塞尔曲线.贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如 PhotoShop. 二次贝塞尔曲线 二次贝塞尔曲线在 ...

  2. javascript -- canvas绘制曲线

    绘制曲线有几种思路: 1.通过quadraticCurveTo(controlX, controlY, endX, endY)方法来绘制二次曲线 2.通过bezierCurveTo(controlX1 ...

  3. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  4. JavaScript+canvas 利用贝塞尔曲线绘制曲线

    效果图: <body> <canvas id="test" width="800" height="300">< ...

  5. canvas绘制曲线

    canvas绘制曲线 方法 quadraticCurveTo(cp1x, cp1y, x, y) 只有一个控制点的贝塞尔曲线(其实就是控制点分别与起始点和结束点连线的公切线) bezierCurveT ...

  6. canvas教程(三) 绘制曲线

    经过 canvas 教程(二) 绘制直线 我们知道了 canvas 的直线是怎么绘制的 而本次是给大家带来曲线相关的绘制 绘制圆形 在 canvas 中我们可以使用 arc 方法画一个圆 contex ...

  7. Canvas上绘制几何图形

    重要的类自定义View组件要重写View组件的onDraw(Canvase)方法,接下来是在该 Canvas上绘制大量的几何图形,点.直线.弧.圆.椭圆.文字.矩形.多边形.曲线.圆角矩形,等各种形状 ...

  8. 安卓自己定义View进阶-Canvas之绘制基本形状

    Canvas之绘制基本形状 作者微博: @GcsSloop [本系列相关文章] 在上一篇自己定义View分类与流程中我们了解自己定义View相关的基本知识,只是,这些东西依然还是理论,并不能拿来(zh ...

  9. 浅谈JavaScript的Canvas(绘制图形)

    HTML5中新增加的一个元素canvas,要使用canvas元素,浏览器必须支持html5.通过canvas标签来创建元素,并需要为canvas指定宽度和高度,也就是绘图区域的大小. <canv ...

  10. 自定义控件之Canvas图形绘制基础练习-青春痘笑脸^_^

    对于自定义控件的意义不言而喻,所以对它的深入研究是很有必要的,前些年写过几篇关于UI效果的学习过程,但是中途比较懒一直就停滞了,而对于实际工作还是面试来说系统深入的了解自定义控件那是很有必要的,所以接 ...

随机推荐

  1. 戴尔笔记本游匣DELL G16 7620更换固态硬盘从选购固态硬盘到系统和应用程序迁移(克隆)全过程(教程)

    又到了捣鼓电脑的时候了.去年(2022年)8月14日买的电脑,当时7月份刚出戴尔游匣G16,搜了一下,2022年7月22日,戴尔首发游匣G16国行版本. 到现在也就用了差不多半年的时间,我的内存满了, ...

  2. Qt连连看(一)需求分析

    虽然开发经验并不多,但是结合以往的一点实践项目和理论学习,自认为不管是开发什么工程项目,只要遵循软件工程的构建原则,如选择一个合理的架构体系,再掌握一门语言,利用数据结构组织数据,算法实现想法和功能, ...

  3. OSG开发笔记(三十):OSG加载动力学仿真K模型文件以及测试Demo

    前言   Osg需要打开模型文件,但是遇到显示动力学仿真的K模型文件,.k文件是一种描述材料属性的文件,比如密度.弹性模量等,该模型文件不是常规中间开放格式,无法直接支持,需要自定义解析并且重建三维模 ...

  4. vue前端开发仿钉图系列(6)左侧记事本的开发详解

    在页面开发中,深深的被element组件所吸引,里面很多小组件都可以直接使用.像是记事本提示.记事本列表时间线.右侧编辑页面的form表单,编辑和查看状态的切换等等,比之前iOS原生开发所有的东西都要 ...

  5. MySQL下载安装教程

    下载 https://www.mysql.com/downloads/

  6. 使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态

    作者:朱亚光,之江实验室工程师,云原生/开源爱好者. KubeSphere 边缘节点的可观测性 在边缘计算场景下,KubeSphere 基于 KubeEdge 实现应用与工作负载在云端与边缘节点的统一 ...

  7. 分享一个大模型在请求api接口上的巧用

    前言 自从Chatgpt横空出世以来,各种智能工具层出不穷,聊天.绘画.视频等各种工具帮助很多人高效的工作.作为一个开发者,目前常用应用包括代码自动填充,聊天助手等. 这些是工具层面的使用,有没有将大 ...

  8. 避免大量ifelse(枚举、工厂模式、策略模式)

    枚举 public class Test { public static void main(String[] args) { System.out.println(judge("ROLE_ ...

  9. Oracle 19.3 RAC on Redhat 7.6 安装最佳实践

    本文讲述了在Redhat Linux 7.6上安装Oracle 19.3 RAC的详细步骤,是一篇step by step指南: 借鉴资深工程师赵庆辉.赵靖宇等人技术博客或公众号编写. 一.实施前期准 ...

  10. 学习JavaScript第四天

    文章目录 1 回顾 内置对象 2 内置对象 2.1 Function 2.2 Global 3 DOM 部分知识点介绍 4 BOM 4.1 window ① 弹框 ② 打开关闭窗口 ③ 页面滚动 ④ ...