先上效果图,首先是顺时针转:

然后是逆时针转:

大概讲一下思路吧,首先讲一下顺时针是怎么弄的,很简单。

画圆弧函数GUI_DrawArc有起始角度a0和终止角度a1两个参数,且a0必须小于a1否则无法显示,而且这个函数的角度正方向又是逆时针的,这就容易造成一个误解,以为起始角度a0和终止角度a1的值只能从0°逆时针增加到360°这么一个变化,换句话说,在a0不变时通过增加a1的值可以让圆弧沿逆时针方向增长。

之前我也是这么认为的,但是通过测试发现,a0为负值也是能正常显示的,只要保证a0<a1。然后顺着上面的思路想了下,那可不可以不改变a1,通过减少a0的值实现圆弧沿顺时针方向增长呢?结果一测试发现果然可行。

啰里啰唆这么多其实就一句话:顺时针转,减起始角度a0;逆时针转,加终止角度a1。

/* 顺时针转,减起始角度 */
a0 = 90;
while(1)
{GUI_DrawArc(0, 0, 20, 20, a0, 90);a0 -= 1;if(a < -270){a0 = 90;}
}/* 逆时针转,加终止角度 */
a1 = 90;
while(1)
{GUI_DrawArc(0, 0, 20, 20, 90, a0);a0 += 1;if(a > 450){a1 = 90;}
}

然后再来说一下圆形端点是怎么实现的,其实这个是从圆弧函数的官方例程里面找到的思路,就是那个画速度表盘的例程。例程代码我就不贴出来了,手册上都有的。也很简单,官方例程在圆弧旁边画了很多的圆形图案,这些圆形图案包括字符的坐标都是通过求圆上任意一点坐标的方法算出来的,只不过计算用的圆半径比画的圆弧小罢了。

我们直接用同样的方法把计算用的圆半径等于画的圆弧,即可求得圆形端点的坐标。

但是具体哪一点的坐标呢?其实分两种情况,一种是定点坐标,这个几乎可以说是已知的,你圆弧哪里不动就求哪里的坐标;另一种是动点坐标,这个就需要根据圆弧运动的一侧进行及时调整了。

不知道这样有没有讲明白,如果实在不懂的话还是直接看代码吧,可以到这个链接下载:分享一个用2D绘图函数做的带圆形端点的环形进度条 - GUI图形库 - 野火电子论坛 - Powered by Discuz!(出处: 野火电子论坛)

2022.04.16更新

最新的emwinv6.16版本有了官方的环形进度条,比我自己实现的好用,大家可以去试试。

可以在这里下载:

单片机版emWin6.16软件包来了,可以完美配合最新版AppWizard了
https://www.armbbs.cn/forum.php?mod=viewthread&tid=107080&fromuid=23005
(出处: 硬汉嵌入式论坛)

用emWin的2D绘图函数画一个带圆形端点的环形进度条相关推荐

  1. 【OpenCV学习】用绘图函数画一个奥运志愿者笑脸徽章

    作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #include "highgui.h" #include "cv.h" ...

  2. [css] 请使用CSS画一个带锯齿形边框圆圈

    [css] 请使用CSS画一个带锯齿形边框圆圈 @import 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

  3. 用 CSS 画一个带阴影的三角形

    1. 思路 怎么用CSS画一个带阴影的三角形呢 ? 有童鞋说, 这还不简单吗 网上有很多解决方案, 但其实大多都是实现不太完美的, 存在一些问题 假设我们做一个向下的三角形箭头 常见的方法大致有两种 ...

  4. 画一个带统计检验的PcOA分析结果 (再进一步,配对比较)

    前期回顾 方差分析基本概念:方差分析中的"元"和"因素"是什么? PERMANOVA原理解释:这个统计检验可用于判断PCA/PCoA等的分群效果是否显著! 实战 ...

  5. css加三角阴影,用CSS画一个带阴影的三角形的示例代码

    1. 思路 怎么用CSS3画一个带阴影的三角形呢 ? 有童鞋说, 这还不简单吗 网上有很多解决方案, 但其实大多都是实现不太完美的, 存在一些问题 假设我们做一个向下的三角形箭头 常见的方法大致有两种 ...

  6. OpenGL with QtWidgets:练习之绘制2D环形进度条

    1.实现思路 这里主要涉及几个点:绘制圆环,绘制文字,动画,抗锯齿. 绘制圆环网上有些人是计算好圆边的顶点后传入的,我这里直接在片段着色器里根据距离圆心的距离来渲染的圆环. void main() { ...

  7. iOS通过CAShapeLayer和UIBezierPath画环形进度条

    UIBezierPath可以绘制矢量路径,而CAShapeLayer是Layer的子类,可以在屏幕进行绘制,本文主要思想是:CAShapeLayer按照UIBezierPath的矢量路径进行绘制. 效 ...

  8. 用svg实现一个环形进度条

    svg实现环形进度条需要用到的知识: 1.会使用path的d属性画一个圆环 //用svg的path元素的A命令画圆<pathd="M cx cym 0 -r a r r 0 1 0 0 ...

  9. 基于canvas 2D实现微信小程序自定义组件-环形进度条

    基于canvas 2D实现微信小程序自定义组件-环形进度条 最近开发一个小程序项目博闻金榜答题小程序,需要使用到一个可以显示答题倒计时的组件,基于进度条实现,下面就主要介绍基于canvas2D实现一个 ...

最新文章

  1. 谈谈对APC的一点理解
  2. 类型、值和变量(一)
  3. 某些情况下安卓引入so冲突的解决
  4. JUnit的各种断言
  5. 设置su为不需要密码切换为root
  6. leetcode944. Delete Columns to Make Sorted
  7. 机器学习基础(八)——感知机(iterative optimization)
  8. jQuery 根据数组对象中的属性值删除当前对象
  9. bzoj2763:最短路
  10. 关于lua字节码在32位和64位系统上不兼容的问题
  11. php函数 call_user_func
  12. 用java求解八枚银币问题_算法笔记_004:8枚硬币问题【减治法】
  13. 网站优化 14条--雅虎十四条优化原则
  14. html做qq钓鱼网站,QQ钓鱼网站是什么?
  15. 深入浅出量化对冲Alpha基金的操作
  16. 英语中what的用法
  17. linux下Dnw配置(mini2440)
  18. 如何用python获取文献_[python]eutilities获取文献题录
  19. 【无标题】健身卡杀寇决山卡卡
  20. 在Navicat上如何停止正在运行的MYSQL语句

热门文章

  1. verilog状态机的三种写法
  2. 和尚挑水 java_java编程:山上有一口缸可以装50升水,现在有15升。老和尚叫小和尚下山挑水,每次挑5升,要挑几次...
  3. 视频文件损坏怎么修复?简单的修复办法分享
  4. 侍魂哪个服务器人最多,经典街机游戏《侍魂》里帅气的人物,你最喜欢哪个?...
  5. windows安装RabbitMQ以及Erlang
  6. I/O大会上落寞离去,谷歌眼镜真的被放弃了吗?
  7. 实战|Python爬取字节跳动1W+招聘信息
  8. 吴恩达-目标检测讲解笔记
  9. 三级分销系统哪家好?360shop
  10. JS获取json子项/数组的个数/长度