From 31b87244ffd1fb33377cbc638e16e471d72f6102 Mon Sep 17 00:00:00 2001 From: idea4good Date: Tue, 14 May 2019 06:25:53 +0800 Subject: [PATCH] update howtowork.md --- doc/HowToWork-cn.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/HowToWork-cn.md b/doc/HowToWork-cn.md index 38a1257..37af153 100644 --- a/doc/HowToWork-cn.md +++ b/doc/HowToWork-cn.md @@ -19,7 +19,9 @@ GuiLite只作两个工作:界面元素管理和图形绘制。 图形绘制包括: - 基本的点线绘制,例如:画点,矩形,横线,竖线等 - 设置绘制图层,如果需要多个图层,在基本点线绘制时,需要给出图层的索引值 -- 图层处理,在图层界面发生变化的时候,将其正确的组合,并输出到最终显示终端上 +- 图层处理,在图层界面发生变化的时候(例如:打开/关闭对话框),GuiLite将决定各个图层上的像素点,哪个会被最终显示在屏幕上 + +👉注意:图形绘制不依赖界面管理,可以独立的存在,例如,在资源有限的单片机环境,有时候不需要界面元素管理,而直接进行图形,文字的绘制。 ## 扩展方法 GuiLite只给出了基本控件(例如:按钮,标签,键盘,选择框)的实现方法,旨在说明控件的实现方法。对于扩展控件,可以选择下面的方式: @@ -38,7 +40,7 @@ widgets: - 实现了用户的手势识别(例如:手指滑动,鼠标按下/释放)的消息传递,将用户的输入信息传递到整个GUI体系树中,并调用相应的响应回调函数;开发者可以根据自己的需要添加/修改响应回调函数。 ## 界面元素管理 -界面元素管理包括:对所有控件(button,spinbox, lable, keyboard),容器(dialog, view)管理;具体的管理方法是为所有的界面元素建造一棵树,利用这棵树实现对所有界面元素的遍历,查询,状态更改。 +界面元素管理包括:对所有控件(button,spinbox, lable, keyboard),容器(dialog, view)管理;具体的管理方法是在用户调用connect函数时,会把所有的界面元素连接起来,从而实现对所有界面元素的遍历/添加/删除等操作。这些链接看起来像一棵树,对界面元素的遍历,就是对这棵树的遍历 比如:当你按下一个dialog的button时,手指的位置信息(x,y)会被传入树的根部(root),然后从root开始寻找,哪个dialog被点中,dialog的哪个button被点中,并调用buton被点中的回调函数,用于作相应处理(一般会进行button的状态修改及重绘工作) @@ -51,7 +53,9 @@ widgets: 当需要删掉该界面元素时,使用disconnect();从此该界面元素会断绝所有的父子关系,从树上摘下来,不再响应用户的触控操作;但对象本身不会被销毁。典型应用场景:软键盘的创建/退出。 ## 图形绘制 -图形绘制包括: 绘制方法和图层管理。其中点绘制是线/面/位图绘制的基础,若干个点的绘制,形成点面及位图;图层管理,则是管理多个界面元素的遮挡关系,系统默认支持3层遮挡关系,这3个层次可以为:视图背景层,对话框层,keyboard/spinbox控件层。 +图形绘制包括: 绘制方法和图层管理。 +- 点绘制是线/面/位图绘制的基础,若干个点的绘制,形成点面及位图 +- 图层管理,则是管理多个界面元素的遮挡关系,系统默认支持3层遮挡关系,这3个层次可以为:视图背景层,对话框层,keyboard/spinbox控件层。 ### 绘制方法 请参看文件bitmap.cpp和surface.cpp中的draw_xxx()函数。