UCGUI学习之路(5)MemDev
2017-10-30 18:26
253 查看
LCD液晶屏上有动画的时候,一般都需要高频刷新屏幕。
如果不使用MemDev,而按传统方法做动画效果,屏幕会闪烁,效果不好。
MemDev的使用是为了上述情况引起的闪烁。
其原理在于,先把这一帧到下一帧的显示过程在内存中预演。把生成的最终结果,再刷新到屏幕上。这样一来屏幕的显示内容变化次数降到最低。直接输出需要显示的内容。有效的避免了闪烁。
我也做了个实验,在一块屏幕上,对比两种效果,一目了然。
视频演示如下:
http://v.youku.com/v_show/id_XMzEyMTY2MTc0NA==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2
MemDev在代码中的使用也很简单:
创建GUI_MEMDEV_Create();
选择GUI_MEMDEV_Select();
界面修改过程
显示GUI_MEMDEV_CopyToLCD();
清楚GUI_MEMDEV_Clear();
如果不使用了,就删除GUI_MEMDEV_Delete();
源码关键部分:
如果不使用MemDev,而按传统方法做动画效果,屏幕会闪烁,效果不好。
MemDev的使用是为了上述情况引起的闪烁。
其原理在于,先把这一帧到下一帧的显示过程在内存中预演。把生成的最终结果,再刷新到屏幕上。这样一来屏幕的显示内容变化次数降到最低。直接输出需要显示的内容。有效的避免了闪烁。
我也做了个实验,在一块屏幕上,对比两种效果,一目了然。
视频演示如下:
http://v.youku.com/v_show/id_XMzEyMTY2MTc0NA==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2
MemDev在代码中的使用也很简单:
创建GUI_MEMDEV_Create();
选择GUI_MEMDEV_Select();
界面修改过程
显示GUI_MEMDEV_CopyToLCD();
清楚GUI_MEMDEV_Clear();
如果不使用了,就删除GUI_MEMDEV_Delete();
源码关键部分:
GUI_MEMDEV_Handle mh;//申请一个变量放句柄 mh = GUI_MEMDEV_Create(0, 30, 240, 145); GUI_MEMDEV_Select(mh);//选择使用 GUI_SetColor(GUI_RED);//这5行是改变过程 GUI_FillCircle(posx,90,30); GUI_SetColor(GUI_YELLOW); GUI_SetTextMode(GUI_TEXTMODE_TRANS); GUI_DispStringAt("Hello World",20,70); GUI_MEMDEV_CopyToLCD(mh);//把上述过程的结果输出 GUI_MEMDEV_Clear(mh);//清除内存
相关文章推荐
- 虚拟内存设备驱动memdev及实例代码
- UCGUI学习之路(6)键值对应的字符
- insmod: error inserting 'memdev.ko': -1 Device or resource busy
- GUI_MEMDEV_Create总是返回0的原因
- Linux设备驱动之mmap设备操作(memdev.c字符设备驱动分析)
- memdev.c字符设备驱动分析(转载)
- 模块插入错误 insmod: can't insert 'memdev.ko': Device or resource busy
- ioctl的实现之memdev.c
- Linux设备驱动之mmap设备操作(memdev.c字符设备驱动分析)
- linux驱动:[2]字符设备驱动memdev(cdev结构解析)
- 国嵌memdev驱动试验
- Memory Device: GUI_MEMDEV_Select()的应用之一
- insmod: cannot insert 'memdev.ko': Device or resource busy的问题
- busybox中memdev的使用方法
- 国嵌--linux字符设备驱动学习之memdev设备
- (7)x210:2.4之前的驱动--memdev模拟驱动-涉及阻塞
- 国嵌--linux字符设备驱动学习之memdev设备
- UCGUI学习之路(1)前言
- 可行的memdev.c设备驱动程序
- UCGUI学习之路(2)移植