AWTK 异形进度条控件发布

news/2024/9/18 12:51:35/ 标签: AWTK, 串口屏

异形进度条控件。通过多边形来定义进度条的形状。

代码地址:https://gitee.com/zlgopen/awtk-widget-progress-polygon
在这里插入图片描述

特性

  • 通过多边形定义进度条的形状
  • 支持通过图片来定义进度条的背景
  • 支持通过图片来定义进度条的前景

使用图片填充比使用颜色填充消耗更多的内存和 CPU,所以在性能要求较高的场景下,尽量使用颜色填充。

用法

多边形的描述用一组 5 元组表示,每个 5 元组包含:

  • value: 进度值 (0-1), 0 表示进度为 0,1 表示进度完成
  • x1: 第一个点的 x 坐标。如果取值 [0,1] 之间,则实际的值为 x1 * width。
  • y1: 第一个点的 y 坐标。如果取值 [0,1] 之间,则实际的值为 y1 * height。
  • x2: 第二个点的 x 坐标。如果取值 [0,1] 之间,则实际的值为 x2 * width。
  • y2: 第二个点的 y 坐标。如果取值 [0,1] 之间,则实际的值为 y2 * height。

它的表示进度为 value 时,进度条对应的上下或左右两个点的坐标。

元组的个数不限,对于直线,描述转折点即可,对于曲线形状,采样就要多一些,才能画出更平滑的曲线。

使用图片填充时,把图片不需要的部分做成透明色,则坐标描述不需要太精确,将图片有用部分包括在其中即可。

示例 1 - 传统矩形进度条

  • 进度为0时,上下的坐标分别为 (0,0) 和 (0,1)
  • 进度为1时,上下的坐标分别为 (1,0) 和 (1,1)
 <progress_polygon polygon="(0, 0,0,0,1)(1, 1,0,1,1)"/>

示例 2 - 三角形进度条

  • 进度为0时,上下的坐标分别为 (0,1) 和 (0,1)
  • 进度为1时,上下的坐标分别为 (1,0) 和 (1,1)
<progress_polygon polygon="(0, 0,1,0,1)(1, 1,0,1,1)" />

准备

  1. 获取 awtk 并编译
git clone https://github.com/zlgopen/awtk.git
cd awtk; scons; cd -

运行

  1. 生成示例代码的资源
python scripts/update_res.py all

也可以使用 Designer 打开项目,之后点击 “打包” 按钮进行生成;
如果资源发生修改,则需要重新生成资源。

如果 PIL 没有安装,执行上述脚本可能会出现如下错误:

Traceback (most recent call last):
...
ModuleNotFoundError: No module named 'PIL'

请用 pip 安装:

pip install Pillow
  1. 编译
  • 编译 PC 版本
scons
  • 编译 LINUX FB 版本
scons LINUX_FB=true

完整编译选项请参考 编译选项

  1. 运行
./bin/demo

文档

完善自定义控件


http://www.ppmy.cn/news/1435598.html

相关文章

为什么AI计算一定要用GPU?

随着人工智能技术的飞速发展&#xff0c;特别是像ChatGPT这样的自然语言处理模型的大热&#xff0c;GPU&#xff08;图形处理器&#xff09;成为了市场上的抢手货。顶级GPU的价格飙升&#xff0c;甚至可以达到数万美元&#xff0c;而GPU制造商英伟达的市场估值也因此飙升至惊人…

React参数传递问题

问题描述 <div className"reply-list">{/* 评论项 */}{list.map((item) > {console.log("map 里面的item", item);return <CommentItem item{item} />; // 调用组件并传递参数item})}</div> // 在组件中使用形参 function CommentI…

下列情景中不属于“虚构优惠折扣“违规的是?()A.利用虚假或者使人误解的优惠折扣信息,或未显著标明优惠折扣使用的限制条件,欺骗、诱导消费者与其进行交易

下列情景中不属于"虚构优惠折扣"违规的是?() 请点击查看答案 A.利用虚假或者使人误解的优惠折扣信息&#xff0c;或未显著标明优惠折扣使用的限制条件&#xff0c;欺骗、诱导消费者与其进行交易 B.宣传商品售价在某一时间段内为优惠价、最低价等&#xff0c;实际…

Composer初次接触

php一直都是简单处理一下单片机的后台服务&#xff0c;没什么深入研究 今天安装一个 php composer.phar require qiniu/php-sdkComposer完全不懂&#xff0c;照着一试&#xff0c;就报错了 - topthink/think-installer v1.0.12 requires composer-plugin-api ^1.0 -> found…

libVLC 专栏介绍

本专栏主要界面libVLC的使用&#xff0c;详细介绍了相关用法&#xff0c;使用Qt作为显示界面&#xff0c;不仅可以了解Qt的使用&#xff0c;QSS的美化&#xff0c;更能够熟悉libVLC核心接口的使用&#xff0c;最后打造一款属于自己的精美播放器。 每一节都有单独的源码供查看。…

临时邮箱API有哪些功能特性?如何选择API?

临时邮箱API的安全性如何保障&#xff1f;电子邮箱API操作指南&#xff1f; 对于很多用户而言&#xff0c;临时邮箱API不仅仅是一个简单的工具&#xff0c;更是一个保护隐私、避免垃圾邮件侵扰的得力助手。那么&#xff0c;临时邮箱API究竟具备哪些功能特性呢&#xff1f;接下…

在vscode使用MATLAB

官方链接 首先安装好vscode、python 与 MATLAB&#xff0c;注意python与MATLAB的版本&#xff0c;参考链接 都安装好后 验证&#xff1a; 安装插件&#xff1a;matlab in vscode &#xff0c;并进行如下设置&#xff0c;参考链接 至此就差不多OK了

docker单机安装Higress(踩坑+解决)

docker单机安装Higress&#xff08;踩坑解决&#xff09; Higress介绍 Higress希望通过内置Waf模块&#xff0c;使得用户的请求链接只经过Higress就可以同时完成Waf防护、流量分发、微服务治理&#xff0c;既可以降低链路RT&#xff0c;也可以降低网关的运维复杂度。因此Higr…

spring boot3单模块项目工程搭建-上(个人开发模板)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 上文衔接 常规目录创建 common目录 exception.handle目录 result.handle目录 controller目录 service…

Mysql联合索引和最左匹配例子说明

文章目录 前言联合索引最左匹配原则举例说明 前言 是什么是索引&#xff1f; 索引是一种数据结构&#xff0c;用于加速数据库查询。 当没有索引时&#xff0c;数据库系统需要执行全表逐行扫描来满足查询需求。这意味着它会逐行读取整个表中的数据&#xff0c;并在内存中进行比…

《十》Qt各种对话框之QFontDialog

QFontDialog 在介绍 QFontDialog 对话框之前&#xff0c;我们先简单介绍一下 QFont 字体类。QFont 主要用于控制文本显示的字体&#xff0c;字体主要有四大属性&#xff1a;①字体家族 family 决定字体外观家族&#xff0c;比如宋体、楷体等&#xff1b; ②字号 pointSize &am…

怎么将音频合并到一起?安利音频合并的3个方法

怎么将音频合并到一起&#xff1f;将音频合并到一起&#xff0c;可以方便我们实现多种需求。无论是制作音乐串烧、拼接演讲或访谈片段&#xff0c;还是整合多个音频文件为一个完整作品&#xff0c;合并功能都显得尤为实用。通过合并音频&#xff0c;我们能够轻松地将不同来源、…

C# 下记录(Record)详解

在C# 9.0中&#xff0c;引入了一个新的关键字&#xff1a;record。record关键字用于定义记录类型&#xff0c;这是一种不可变的数据结构&#xff0c;用于表示具有明确字段名称和类型的数据集。本文将详细介绍C#中record类型的使用和特点&#xff0c;以及如何通过记录记录器&…

shell--while循环

1.基本语法 while [ 条件表达式 ] do语句语句 done 示例&#xff1a;循环输出 1~10这几个数 [rootopenEuler ~]# cat while1.sh #!/bin/bashi1 while [ $i -le 10 ] doecho $ilet i done 示例&#xff1a;使用 exec 读取指定文件的内容并循环输出。 # 第一步创建文件及内…

高可靠性部署系列(1)--- 防火墙双机热备

高可靠性部署系列(1)--- 防火墙双机热备 前言网络拓扑网络规划设备选型组网需求配置思路操作步骤结果验证前言 近期有读者留言:“因华为数通模拟器仅能支持USG6000V的防火墙,无法支持别的安全产品,导致很多网络安全的方案和产品功能无法模拟练习,是否有真机操作的实验或…

Redis学习-Redis的九种数据结构

String &#xff08;字符串&#xff09; 虽然redis是用C语言编写&#xff0c;但是redis中的string是redis自己实现的字符串结构&#xff0c;叫Simple Dynamic String简称&#xff08;SDS&#xff09;&#xff0c;因为redis做为中间件会接受不同语言编写的程序传过来的字符串&a…

华为OD机试真题-机器人仓库搬砖-2023年OD统一考试(C卷D卷)

题目描述: 机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损…

STM32使用PWM控制舵机

STM32使用PWM控制舵机 1、舵机的控制原理 舵机是一种位置伺服驱动器&#xff0c;是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时&#xff0c;输出轴就可以转到特定的位置。只要控制信号持续不变&#xff0c;伺服机构就会保持相对的角度位置不变。如果控制信号发…

JavaScript进阶知识点及案例(续)

编程思想 面向过程介绍 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步的实现&#xff0c;使用的时候再一个一个的依次调用就可以了 面向对象介绍 面向对象是把事务分解成为一个个对象&#xff0c;然后由对象之间分工与合作面向对象是以…

【Hadoop】- MapReduce YARN的部署[8]

目录 一、部署说明 二、集群规划 三、MapReduce配置文件 四、YARN配置文件 五、分发配置文件 六、集群启动命令 七、查看YARN的WEB UI 页面 一、部署说明 Hadoop HDFS分布式文件系统&#xff0c;我们会启动&#xff1a; NameNode进程作为管理节点DataNode进程作为工作节…