搜索
bottom↓
回复: 13

0.96TFT屏画圆弧进度条

[复制链接]

出0入0汤圆

发表于 3 天前 | 显示全部楼层 |阅读模式
200汤圆
本帖最后由 rqiang 于 2024-9-24 02:13 编辑

有没有坛友做过类似项目,在驱动IC为ST7735 160x80 0.96FTF上画一个80x80的圆弧,并且带0-100(顺时针),100-0(逆时针)的进度条,类似下面效果,目前驱动用的M0只有32K/4K, 资源太小,没有办法用图形库,附上TFT_eSPI的库地址,能移植圆弧部分也行。
https://github.com/Bodmer/TFT_eSPI

附件: 您需要 登录 才可以下载或查看,没有帐号?注册

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 3 天前 | 显示全部楼层
试试arm-2d,据说是为小资源单片机开发的,我还没开始学

出0入4汤圆

发表于 3 天前 | 显示全部楼层
试试GUIlite,我刚看,还没仔细玩

出0入16汤圆

发表于 3 天前 | 显示全部楼层
自己画这种小圆的话锯齿太丑了
我是反向操作的,刷屏程序用ID设计的最完整的图画了再用背景色覆盖掉不需要的地方

出0入475汤圆

发表于 3 天前 来自手机 | 显示全部楼层
我不懂这些,但是直观感觉要在80x80点上面显示100歌店的圆,自己在纸上画一下啥效果😱
怎么可能有你期望的那样效果?

出0入0汤圆

 楼主| 发表于 3 天前 | 显示全部楼层
sd.shi 发表于 2024-9-24 08:33
试试arm-2d,据说是为小资源单片机开发的,我还没开始学
(引用自2楼)

好的,去看看

出0入0汤圆

 楼主| 发表于 3 天前 | 显示全部楼层
zqf441775525 发表于 2024-9-24 08:35
试试GUIlite,我刚看,还没仔细玩
(引用自3楼)

这个32K好像也不够

出0入0汤圆

 楼主| 发表于 3 天前 | 显示全部楼层
1a2b3c 发表于 2024-9-24 09:29
我不懂这些,但是直观感觉要在80x80点上面显示100歌店的圆,自己在纸上画一下啥效果😱
怎么可能有你期望的 ...
(引用自5楼)

用arduino试过,显示效果还可以

出0入0汤圆

 楼主| 发表于 3 天前 | 显示全部楼层
Elex 发表于 2024-9-24 09:05
自己画这种小圆的话锯齿太丑了
我是反向操作的,刷屏程序用ID设计的最完整的图画了再用背景色覆盖掉不需要 ...
(引用自4楼)

具体怎样操作,能详细说下吗

出0入16汤圆

发表于 3 天前 | 显示全部楼层
rqiang 发表于 2024-9-24 11:06
具体怎样操作,能详细说下吗
(引用自9楼)

因为是对称的圆形,只存1/4再加上开始或结束部分,
1,然后将这部分数据通过坐标换算写屏,
2,坐标相对于中心点的角度超过数据进度条比例的话就写背景色
3,显示数字和其它icon的位置空出来不画图先,免得这部分闪烁

出200入2554汤圆

发表于 3 天前 | 显示全部楼层
Elex 发表于 2024-9-24 11:47
因为是对称的圆形,只存1/4再加上开始或结束部分,
1,然后将这部分数据通过坐标换算写屏,
2,坐标相对 ...
(引用自10楼)

相当于环内外圆弧有PS抗锯齿,环端面单片机绘制没抗锯齿,对吧?

出0入0汤圆

 楼主| 发表于 3 天前 | 显示全部楼层
// 绘制圆环段的函数
void drawCircleSegment(uint16_t x0, uint16_t y0, uint16_t r, uint16_t thickness, uint8_t startSegment, uint8_t endSegment, uint16_t color)
{
    // x0, y0: 圆心坐标
    // r: 圆的半径
    // thickness: 圆环的粗细
    // startSegment: 开始段的编号(0-100)
    // endSegment: 结束段的编号(0-100)
    // color: 圆环颜色
    float angleStep = 360.0 / 100; // 每段的角度

    if (startSegment < endSegment) // 正向
    {
        for (uint8_t i = startSegment; i < endSegment; i++)
        {
            float startAngle = i * angleStep - 90.0;
            float endAngle   = (i + 1) * angleStep - 90.0;

            // 转换为弧度制
            float startRad = startAngle * M_PI / 180.0;
            float endRad   = endAngle * M_PI / 180.0;

            for (int t = 0; t < thickness; t++)
            {
                for (float theta = startRad; theta < endRad; theta += 0.01)
                {
                    int x = x0 + (r - t) * cos(theta);
                    int y = y0 + (r - t) * sin(theta);

                    if (x >= 0 && x < 160 && y >= 0 && y < 80)
                    {

                        ST7735_DrawPixel(x, y, color);
                    }
                }
            }
        }
    }
    else // 反向
    {
        for (uint8_t i = startSegment; i > endSegment; i--)
        {
            float startAngle = (i - 1) * angleStep - 90.0;
            float endAngle   = i * angleStep - 90.0;

            // 转换为弧度制
            float startRad = startAngle * M_PI / 180.0;
            float endRad   = endAngle * M_PI / 180.0;

            for (int t = 0; t < thickness; t++)
            {
                for (float theta = startRad; theta < endRad; theta += 0.01)
                {
                    int x = x0 + (r - t) * cos(theta);
                    int y = y0 + (r - t) * sin(theta);

                    if (x >= 0 && x < 160 && y >= 0 && y < 80)
                    {

                        ST7735_DrawPixel(x, y, color);
                    }
                }
            }
        }
    }
}

GPT生成了一段代码,功能可以实现,就是画的不圆,特别在4个方向位置,有段直线效果

出0入16汤圆

发表于 前天 03:29 | 显示全部楼层
t3486784401 发表于 2024-9-24 14:48
相当于环内外圆弧有PS抗锯齿,环端面单片机绘制没抗锯齿,对吧?
(引用自11楼)

是的
原图是ID设计师用PS之类工具设计好的,圆环可以平滑圆润,还可以是各种彩色
单片机资源有限就根据对称性只存一部分再通过坐标转换就可以画整个圆了
起点是固定的可以继续用原图的,末端端面才一点点,没有抗锯齿也不太影响,满幅的末端也可以继续用原图的末端

出0入16汤圆

发表于 前天 03:45 | 显示全部楼层
rqiang 发表于 2024-9-24 15:56
// 绘制圆环段的函数
void drawCircleSegment(uint16_t x0, uint16_t y0, uint16_t r, uint16_t thickness, ...
(引用自12楼)

不是画的不圆,而是这种方法画出来的是二值化的图,圆弧没有过度色,颗粒锯齿很明显
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-27 12:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表