首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用初中数学知识撸一个canvas环形进度条

效果图 先放个效果图,然后再说下具体实现过程,各位看官且听我慢慢道来。 安装与使用 源码地址[1],欢迎star和提issue。...对于角度而言,0°是x轴正向,默认是顺时针方向旋转。 圆环的圆心就是canvas的中心,所以x, y 取outerRadius的值就可以了。...canvas.clientWidth / 2取得中点坐标,结合控制文字对齐的两个属性textAlign和textBaseline,我们可以将文字绘制在画布中央。...,由父组件传入: pointRadius: { type: Number, default: 6 } 角度自定义 当然,进度条的角度是灵活定义的,包括开始角度,结束角度,都应该由调用者随意给出...控制进度,同时提供start-deg属性控制起始角度; with-gradient改为use-gradient 通过show-text控制是否显示进度文字 支持通过format函数自定义显示文字的规则

58520

移动端圆环进度动画方案(透明背景-透明度圆环-css3版)

所以对于大于50%的圆环旋转动画,是需要两段动画拼接的,左半边的圆环先旋转180度到右半边,右半边的圆环再旋转相应的度数至左半边,这里旋转角度不是固定的,需要根据具体进度确定,所以这种方案右半边的圆环旋转多少度是通过...思考下第一版方案失败的根本原因,就是整个圆环进度是由两个半圆环分别动画形成的,右侧圆环的旋转角度不是固定的,使用transition实现需要通过js动态添加旋转角度样式,js语句的执行使得两个圆环执行动画的时间差无法确定...那么换一种思维方式,我们有了第二版解决方案: 利用纯css控制两个半圆环动画的执行,让两个半圆环动画都固定旋转180度,时间差固定,我们要控制的就是可视区域的角度。...上面我们讨论过,右半边不可见区域的圆环旋转到左半边时,整个左半边都是可见区域,所以我们旋转180度后当然能看见完整的半圆环,那我们尝试着根据我们需要的角度缩小左半边的可见区域不就可以了。...具体来讲,我们实现右半边可见圆环用了两层,实现左半边可见圆环用了三层,两个圆环从左到右、从右到左分别旋转180度,最后我们可以完整的看到整个右半侧圆环,而左半侧的圆环因为还有一层遮挡,只能看到我们所需进度的相应角度

1.5K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    移动端圆环进度动画方案(透明背景-透明度圆环-css3版)

    所以对于大于50%的圆环旋转动画,是需要两段动画拼接的,左半边的圆环先旋转180度到右半边,右半边的圆环再旋转相应的度数至左半边,这里旋转角度不是固定的,需要根据具体进度确定,所以这种方案右半边的圆环旋转多少度是通过...思考下第一版方案失败的根本原因,就是整个圆环进度是由两个半圆环分别动画形成的,右侧圆环的旋转角度不是固定的,使用transition实现需要通过js动态添加旋转角度样式,js语句的执行使得两个圆环执行动画的时间差无法确定...那么换一种思维方式,我们有了第二版解决方案: 利用纯css控制两个半圆环动画的执行,让两个半圆环动画都固定旋转180度,时间差固定,我们要控制的就是可视区域的角度。...上面我们讨论过,右半边不可见区域的圆环旋转到左半边时,整个左半边都是可见区域,所以我们旋转180度后当然能看见完整的半圆环,那我们尝试着根据我们需要的角度缩小左半边的可见区域不就可以了。...具体来讲,我们实现右半边可见圆环用了两层,实现左半边可见圆环用了三层,两个圆环从左到右、从右到左分别旋转180度,最后我们可以完整的看到整个右半侧圆环,而左半侧的圆环因为还有一层遮挡,只能看到我们所需进度的相应角度

    1.5K30

    用初中数学知识撸一个canvas环形进度条

    效果图 先放个效果图,然后再说下具体实现过程,各位看官且听我慢慢道来。 ?...web坐标系 对于角度而言,0°是x轴正向,默认是顺时针方向旋转。 圆环的圆心就是canvas的中心,所以x, y 取outerRadius的值就可以了。...画圆环 画文字 调用fillText绘制文字,利用clientWidth/2和clientWidth/2取得中点坐标,结合控制文字对齐的两个属性textAlign和textBaseline,我们可以将文字绘制在画布中央...90度画圆点 角度自定义 当然,进度条的角度是灵活定义的,包括开始角度,结束角度,都应该由调用者随意给出。因此我们再定义一个属性angleRange,用于接收起止角度。...特殊角度怎么求圆点圆心坐标 噗……看来高兴过早了,最重要的是根据不同角度求得圆点的圆心坐标,这让我顿时犯了难。

    98220

    60种常用可视化图表的使用场景——(上)

    适合用来快速检视数据集中不同类别的分布和比例,并与其他数据集的分布和比例进行比较,让人更容易找出当中模式。...多组条形图通常用来将分组变量或类别与其他数据组进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。 但缺点是,当有太多条形组合在一起时将难以阅读。...、Slemma、ZingChart... 26、圆环图 圆环图 (Donut Chart) 基本上就是饼形图,只是中间的部分被切掉。...不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。...28、旭日图 也称为「多层饼形图」或「径向树图」,通过一系列的圆环显示层次结构,再按不同类别节点进行切割。

    26910

    Tableau目标跟踪图的6种实现方式

    publish=yes 方式一 效果展示: 制作要领: ① 数据源如下截图,凳子的销售额的目标完成度为69.83%,且创建新字段“目标差距”=1-sum([目标完成度]) ② 将标记选择饼图,度量值拉到颜色与角度...⑧ 先将最先建立的圆环拉到仪表板,再将文本工作表浮动在上面,调整工作表透明度,去掉无关网格线。...()) ③ 将x拉到行,y拉到列,标记改为线,实际完成度拉到颜色与标签,ds拉到路径;点击纵轴,显示标题去掉 ④ 点击标签,只保留线尾标签,且调整线的颜色 ⑤ 点击横轴,调整字体为Arial &百分比形式...② 将商品拉入列,实际完成度和目标拉入行,且选择柱形图 ③ 实际完成度拉到目标右侧,点击实际完成度,选择双轴 ④ 标记下的目标颜色选择白色,边框选择黑色,标记下的实际完成度颜色选择蓝色 方式四...([目标])-sum([实际完成度]) ③ 标记选择饼图,将度量名称拖到颜色和详细信息,度量值拖到角度,度量值中只保留实际完成度和差距即可 ④ 调整颜色,将实际完成度的颜色调成蓝色,差距颜色调成白色

    77650

    D3、openlayers的一次尝试

    近期尝试了一个webgl相关的内容,有些小激动,及时分享一下我的测试示例,效果如下: 此示例分从业务角度分为两部分,一个部分为d3展示的柱图,另一部分则为用openlayers展示的地图。...,flip-container作为最外层的包装,在其上面应用了perspective属性(此属性的详细解释可参考此文章),表示视距,他能影响到我们3d变换效果是否更接近真实;flip-wrap作为前、后两个...back默认让其旋转至-180deg,是为了让其过滤效果更为流畅和平滑。...绘制柱图的具体实现 flip.store.js:数据接口,用于返回从后台接口获取到的数据 city.js:城市名称数据字典 adapter/d3.js:用于将后台数据转换为d3可用的数据格式 adapter.../ol.js:用于将后台数据转换为openlayers可用的数据格式 adapter/provider.js:转换器工厂入口 本示例主要以flip.js为主,在组合d3和ol相关功能。

    1.9K70

    Qt编写自定义控件3-速度仪表盘

    一、前言 速度仪表盘,写作之初的本意是用来展示当前测试的网速用的,三色圆环+数码管显示当前速度,Qt自带了数码管控件QLCDNumber,直接集成即可,同时还带有动画功能,其实也可以用在汽车+工业领域等...,展示汽车的当前速度和各种指标情况,比如生成领域的完成百分比等,控件采用纯painter绘制,自由拉伸不变形,背景透明的,贴上个背景图就会显得更漂亮。...二、实现的功能 1:可设置范围值,支持负数值 2:可设置精确度,最大支持小数点后3位 3:可设置大刻度数量/小刻度数量 4:可设置开始旋转角度/结束旋转角度 5:可设置是否启用动画效果以及动画效果每次移动的步长...6:可设置三色圆环占比例 7:自适应窗体拉伸,刻度尺和文字自动缩放 三、效果图 [在这里插入图片描述] 四、头文件代码 #ifndef GAUGESPEED_H #define GAUGESPEED_H.../结束旋转角度 * 5:可设置是否启用动画效果以及动画效果每次移动的步长 * 6:可设置三色圆环占比例 * 7:自适应窗体拉伸,刻度尺和文字自动缩放 */ #include

    1.3K31

    SVG 菜鸟的 Recharts 自定义图表实战

    它基于 React 和 D3 构建,具有以下特点: 声明式的标签,让写图表和写 HTML 一样简单 贴近原生 SVG 的配置项,让配置项更加自然 接口式的 API,解决各种个性化的需求...饼图的实现 自定义的柱状图 如图,这里的饼图的圆环部分,使用了 PieChart 组件,中间的文字和图例则直接使用 HTML 渲染,不依赖 Recharts。...2.1 实现圆环部分放大 Recharts 提供的 Pie 组件可以实现基本的圆环部分。需要自定义颜色的情况下,通过 Cell 组件把饼图每一份的颜色传入。...用三角函数可以很快把三个点的坐标分别计算出来。 接下来把这一切转换成代码的表达。需要考虑角度弧度转换、方向等问题。... So easy~ 3.2 顶部改为圆角 接下来我们实现圆角的顶部,它本质上是一个封闭的 ,我们只需要画一个顶部为圆角的矩形就可以了。

    1.7K20

    Android进阶之绘制-自定义View完全掌握(一)

    对于UI设计,Android原生的控件加上一些开源库的使用,已经能够满足大部分的UI需求,但是,某些比较新颖、花哨的控件效果,我们只能通过自定义View来实现,那么,从该篇博客开始,我将记录关于Android...我已经能正确点击到每一个圆环,而我的代码只是将三个相对布局调换了一下位置,既然大圆环会覆盖到小圆环,那我们直接把大圆环放到最上面,这样就不会出现覆盖问题了。 这是我们需要注意的一个点。...我们可以把功能分为两层,我们先完成中间圆环菜单键控制最外层圆环旋转的动画。然后再完成最里层圆环home键控制中间圆环旋转的动画。 修改MainActivity的代码。...这样就实现了再点击手机的menu键时圆环旋转消失,但是这样就产生了一个bug,不知道观察了上面的动图大家发现bug没有,当我按menu键隐藏圆环时,我再去点击圆环的位置,圆环还是旋转出来了,按道理我们的圆环消失后...我们把Tools类中的四个方法的View参数全部改为ViewGroup,然后对ViewGroup的孩子进行禁止点击的操作。具体代码如下。

    61040

    用Tableau实现目标跟踪的6种方式

    publish=yes 方式一 效果展示: 制作要领: ① 数据源如下截图,凳子的销售额的目标完成度为69.83%,且创建新字段“目标差距”=1-sum([目标完成度]) ② 将标记选择饼图,度量值拉到颜色与角度...⑧ 先将最先建立的圆环拉到仪表板,再将文本工作表浮动在上面,调整工作表透明度,去掉无关网格线。...()) ③ 将x拉到行,y拉到列,标记改为线,实际完成度拉到颜色与标签,ds拉到路径;点击纵轴,显示标题去掉 ④ 点击标签,只保留线尾标签,且调整线的颜色 ⑤ 点击横轴,调整字体为Arial &百分比形式...② 将商品拉入列,实际完成度和目标拉入行,且选择柱形图 ③ 实际完成度拉到目标右侧,点击实际完成度,选择双轴 ④ 标记下的目标颜色选择白色,边框选择黑色,标记下的实际完成度颜色选择蓝色 方式四...([目标])-sum([实际完成度]) ③ 标记选择饼图,将度量名称拖到颜色和详细信息,度量值拖到角度,度量值中只保留实际完成度和差距即可 ④ 调整颜色,将实际完成度的颜色调成蓝色,差距颜色调成白色

    76220

    地球是个球体,那宇宙是个啥?

    一个是关于其几何形状:对诸如角度和面积之类的物体进行精细的局部测量。另一个关于他的拓扑结构:如何将这些局部片段缝合在一起形成一个总体形状。...由于该宇宙的几何形状来自一张平坦的纸,因此,我们习惯于使用的所有几何事实至少在小范围内与平常相同:三角形中的角度之和为180度,依此类推。...例如,由于球面几何中的直线是大圆,所以三角形比其欧几里得对应物更膨胀,并且它们的角度加起来超过180度: 实际上,测量宇宙三角形是宇宙学家测试宇宙是否弯曲的主要方式。...在双曲几何中,三角形的角度之和小于180度,例如,在我们的庞加莱圆盘的平铺中的三角形的角度之和等于165度: 这些三角形的边看起来不是笔直的,但这是因为我们正在通过变形的透镜查看双曲几何。...例如,球面几何中的小三角形的角度之和仅略大于180度,而双曲几何形状中的小三角形的角度之和仅略小于180度。

    1K30

    Mongodb Geo2d索引原理

    索引,false表示将索引理解为平面2d索引,true表示将索引理解为球面经纬度索引。...to 180. 2d索引在Mongodb中的存储 上面我们讲到Mongodb使用平面四叉树的方式计算Geohash。...但是换个角度来看,其实以地球为一个整体去看待存储的点,绝对是稀疏的。这个稀疏的性质使得我们可以粗略的以平面四叉树的角度自上而下的找出与圆环相交的四叉树中间节点。...整个平面与圆环必然是相交的,于是将平面一分为四,剔除不相交的部分,对于每个留下来的子平面,继续一分为四,剔除不相交的部分,经过多轮迭代,留下来的子平面的GeoHash都是该子平面中所有grid的索引前缀...,如下面四幅图所示: 上面四幅图中,分别为整个平面被四叉树划分0,1,2,3次后与圆环的相交情况,如果继续往下细分,所形成的图形就越来越逼近整个圆环。

    3.2K00

    60 种常用可视化图表,该怎么用?

    多组条形图 多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。 多组条形图通常用来将分组变量或类别与其他数据组进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。...圆环图 圆环图 (Donut Chart) 基本上就是饼形图,只是中间的部分被切掉。...不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。...旭日图 也称为「多层饼形图」或「径向树图」,通过一系列的圆环显示层次结构,再按不同类别节点进行切割。...卡吉图 卡吉图 (Kagi Chart)能通过一系列线段显示价格表现,进而显示特定资产的一般供需水平。由于与时间无直接关系,它能更清晰地显示重要的价格走势。

    9K10

    WPF 实现带明细的环形图表

    ; 比较抱歉的是样式比较丑陋,忽略吧,重点看定位; 圆弧部分 Arc有两个重要的属性:StartAngle起始角度和EndAngle终结角度.这两个属性决定了圆弧占所在圆环的比例; 每一个数据项就对应一个圆弧...,把所有圆弧都放到一个容器里,首尾相连; 数据项的总和为100,那么所有圆弧也就组成一个完整的圆环; Popup明细部分 明细部分分为四种,见图; 椭圆 从图可知,作为背景的椭圆分为两种情况,小于180...度,椭圆靠容器的右边对齐,大于180度,靠容器的左边对齐; 也就是代码的这部分; Ellipse ell = new Ellipse() { Fill = brush }; //中间点角度小于180 明细靠右显示...首先以0-90度为例,说明一些基本的东西,见图; 首先Popup默认的位置,都是在它容器的左下方的,Popup的左上角和容器的左下角重合; 现在要做的是Popup标记为红点的位置,和圆环上标记为红点的位置重合...r相等;注意:因为圆弧是有厚度的,所以取r的时候要减去二分之一的圆弧厚度; 角A是可以通过90度减去圆弧的对应的角度求出来的,也就是sinA的值已知了,那么就可以求出a和b的长度,然后就可以去移动Popup

    48810

    可视化图表样式使用大全

    适合用来快速检视数据集中不同类别的分布和比例,并与其他数据集的分布和比例进行比较,让人更容易找出当中模式。 点数图 ?...多组条形图通常用来将分组变量或类别与其他数据组进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。 但缺点是,当有太多条形组合在一起时将难以阅读。...圆环图 ? 圆环图 (Donut Chart) 基本上就是饼形图,只是中间的部分被切掉。...不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。...也称为「多层饼形图」或「径向树图」,通过一系列的圆环显示层次结构,再按不同类别节点进行切割。

    9.4K10

    常用60类图表使用场景、制作工具推荐!

    多组条形图 多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。 多组条形图通常用来将分组变量或类别与其他数据组进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。...圆环图 圆环图 (Donut Chart) 基本上就是饼形图,只是中间的部分被切掉。...不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。...旭日图 也称为「多层饼形图」或「径向树图」,通过一系列的圆环显示层次结构,再按不同类别节点进行切割。...卡吉图 卡吉图 (Kagi Chart)能通过一系列线段显示价格表现,进而显示特定资产的一般供需水平。由于与时间无直接关系,它能更清晰地显示重要的价格走势。

    8.9K20

    一致性哈希指南

    非加密哈希函数也有几种用途,最常见的是它们在哈希表中的使用,这是我们关心的问题,我们将更详细地进行探讨。...假设我们将哈希输出范围映射到圆环的边缘。这意味着最小散列值零将对应于零角,其最大可能值(我们称为INT_MAX的大整数)对应于2?(或360度)的角,所有其他的哈希值线性地介于两者之间。...我们可以取出一个key值,计算它的哈希值,然后找出它在圆环的位置。...273.4 "jane" 5000799124 180 "steve" 9787173343 352.3 "kate" 3421657995 123.2 现在假设我们将服务器也放置在圆环,通过伪随机方式分配它们所在的角度..."A" A "bill" 7594873884 273.4 "B" B "steve" 9786437450 352.3 "C" C 从编程的角度来看,我们要做的是保持服务器值的排序列表(可以是任何真正间隔的角度或数字

    79320

    一张漂亮的可视化图表背后|洞见

    要列出“可视化元素之根”很容易:位置、长度、角度、形状、纹理、面积(体积)、色相、饱和度等几种有限的元素,邱南森在他的《数据之美》中提供了一张视觉元素的图,其中包含了大部分常用的元素。 ?...另外,我们根据每次睡觉的分钟数将睡眠质量划分为5个等级: var level = d3.scale.threshold() .domain([60, 120, 180, 240, 300]) ....角度转弧度 我们首先将整个圆(360度)按照分钟划分,则每分钟对应的角度数为:360/(24*60),再将角度转化为弧度:degree * π/180: var perAngle = (360 / (24...初看起来,它像是星空图,但是图中的不同颜色含义没有那么直观,我们需要在图上补充一个图例。通过使用d3的线性标尺和定义svg的渐变来实现,定义好渐变和渐变的颜色取值范围之后,就可以来绘制图例了。 ?...制作背景图 我从相册中选取了很多女儿睡觉时拍的照片,现在需要有个工具将这些照片缩小成合适大小,然后拼接成一个大的图片。

    1.3K70
    领券