ucgui GUI_MEMDEV_Draw()

来源:互联网 发布:手机淘宝店怎么开 编辑:程序博客网 时间:2024/04/30 13:08

1.GUI_Context

    这是一个全局的变量,程序运行时,会不断来查询这个变量的内容,从而改变程序的流向。 简单理解为程序运行中的环境变量。memdev,lcd的api函数,前景色,背景色窗口指针函数参数等。

2.struct GUI_MemDev 这个结构体就是用来描述一个存储设备。但是这个结构不包含要贴到lcd屏上的颜色信息,因为这些内容安排在memdev变量的后面。

3.int GUI_MEMDEV_Draw(GUI_RECT* pRect, GUI_CALLBACK_VOID_P* pfDraw, void* pData, int NumLines, int Flags)

 numlines为0时,函数会根据pRect参数来自动分配numlines的大小。pRect所指矩形的大小即是memdev最终要贴到屏幕上的大小。函数先创建一个memdev,就是根据pRect来分配一个合适大小的内存。内存在GUI_Heap这个堆内然后选择memdev做为操作的设备。GUI_MEMDEV_SELECT( )这个函数会更新GUI_Context 这个变量的内容。因为使用GUI_MEMDEV_Draw()了这个函数 ,肯定已经定义了GUI_SUPPORT_MEMDEV这个宏,所以在绘制一些矩形,圆等基本图形时,操作函数改变了 具体见gui_private.h这个文件。

调用回调函数,将要画的内容画到memdev中。memdev的大小:memsize = ysize * BytesPerLine + sizeof(GUI_MEMDEV);GUI_MEMDEV只是一个描述memdev的结构,它放在这块内存的最前面。内存后面的ysize * BytesPerLine大小的空间就是放回调函数画的内容。这些内容实际上就是一些索引颜色值。准备好数据后,将数据贴到屏上,最后做些收尾工作。

在分析GUI_MEMDEV_CreateEx()这个函数时,有一个GUI_USAGE_BM的结构,实在让人费解。留待以后解决。





原创粉丝点击