找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1631|回复: 3
收起左侧

TFT屏字体使用叠加模式,动态叠加在图片写代码遇到的问题[已解决]

[复制链接]
ID:1138806 发表于 2024-12-6 19:05 | 显示全部楼层 |阅读模式
1.本人目前的两种想法 51hei20241206-183818.png 51hei20241206-190030.png else 注释掉的是打点函数。
2.两种显示遇到的问题均是填充的颜色不准确,将图片保存在W25Q64里,每个像素的地址计算不准确 图中有很多种PIC_Buf_Add的计算方法,效果都不太好。
51hei20241206-185620.png 这个用的是色块填充,有轻微色差
51hei20241206-185557.png 这个用的是叠加算法,混合打点,颜色偏的厉害

问题在于使用色块填充整个屏幕,X,Y都取0开始,颜色和直接刷新整张图片都有差别,难道一个像素不是2Byte吗,屏幕是(ST7789 RBG565色彩)?


                       12-7日更新

更新代码 57368598EDD8ADBB5C3FCC6008A5BC7B.png 51hei20241207-104434.png
最新进展,代码理解是没有问题的,显示问题是当Y>100时显示错误,Y<=100时没有问题。
测试效果
51hei20241207-105455.png 将图片放大后应该是看清色块很明显有差别。



写完了
回复

使用道具 举报

ID:69038 发表于 2024-12-7 09:23 | 显示全部楼层
你这个操作,牵涉到“层”的概念,还需要一个合适的buffer..
在显示图片后,立即缓存指定区域的数据,以这个区域为基准,即新建一个层,所有的字符显示都在这个层内。
当需要叠加显示时,把已缓存的内容,原地再刷一次,即清空新建的层,再显示字符就OK了。
回复

使用道具 举报

ID:1138806 发表于 2024-12-7 11:01 | 显示全部楼层
zhuls 发表于 2024-12-7 09:23
你这个操作,牵涉到“层”的概念,还需要一个合适的buffer..
在显示图片后,立即缓存指定区域的数据,以这 ...

没错的,我是使用这种方法填充的, 如果字符有更新就先刷新图层,再显示字符。我更新了文章,已经发现关键问题了,等审核结束您在看看吧。
回复

使用道具 举报

ID:69038 发表于 2024-12-9 15:50 | 显示全部楼层
你的缓存能不能放在RAM中?不要每次刷新都去读FLASH吧?如果RAM小的话就算了。。
因为你是在320*240的范围内贴图,且你的原图数据也是适配320*240的,所以bufer边缘应该都不会越界。
所以你的缓存地址算法或许可以优化一下。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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