OpenEdv-开源电子网

 找回密码
 立即注册
查看: 3537|回复: 4

LVGL 怎样将当前显示画面存储为图片

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-3-17
在线时间
7 小时
发表于 2021-3-24 13:58:33 | 显示全部楼层 |阅读模式
3金钱
比如现在有一张 背景图片 作为壁纸,上面有一些控件,现在想将目前显示的画面保存下来,后面将这个保存的画面当做 img 控件(缩放、移动等)使用?
目前暂不知如何实现,请教各位大佬指点一下方向?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2013-3-18
在线时间
82 小时
发表于 2021-3-24 16:39:56 | 显示全部楼层
全屏缓冲的话比较容易,可以通过复制当前的LCD缓冲区的数据即可。如果不是全屏缓冲,就得自己拼接一屏完整数据了。有了数据后,保存img控件就直接配置一下img的数据指针就可以了。至于缩放就要自己实现了,移动就是改变坐标咯
回复

使用道具 举报

5

主题

353

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4300
金钱
4300
注册时间
2019-4-30
在线时间
877 小时
发表于 2021-3-24 16:55:46 | 显示全部楼层
全屏拷贝,然后JPG编码存储
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-3-17
在线时间
7 小时
 楼主| 发表于 2021-3-24 18:01:33 | 显示全部楼层
设置为全屏缓冲,直接拷贝数组,然后将数组配置为 img,图片上方像素会乱,如下:
1.png      

全屏拷贝并缩放到原来 3/4

全屏拷贝并缩放到原来 3/4

                 原显示                                  全屏拷贝并缩放到原来的 3/4   

怀疑是复制缓冲时正在执行刷新任务,尝试过在复制显示缓冲时 调用 “ lv_task_enable(false); ”,复制结束再打开任务处理 “ lv_task_enable(true);  ”,现象仍然一样

还没找到是啥问题





回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-3-17
在线时间
7 小时
 楼主| 发表于 2021-3-24 18:03:06 | 显示全部楼层
对比过显示缓冲数组和复制后的图片数组,内容开头结尾都是一样的
回复

使用道具 举报

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

本版积分规则

关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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