HTML5技术

Atiti.ui原理与gui理论 - attilaxAti

字号+ 作者:H5之家 来源:H5之家 2016-09-27 18:00 我要评论( )

1. 概论 2. ui 的类型 2.1. RMGUI vs IMGUI Immediate Mode GUI (IMGUI) EDXGui 。可以看出 IMGUI 也可以实现较为复杂的控件,给自己的杂七杂八的程序用绰绰有余了。 2.2. Cli 2.3. Gui 2.4. Nui natural user interface 阶段 3.1. 1. 命令行界面 CLI 命令行

 

 

 

 

 

 

 

1. 概论 2. ui的类型  2.1. RMGUI vs IMGUI

 

Immediate Mode GUI (IMGUI)

 

EDXGui。可以看出IMGUI也可以实现较为复杂的控件,给自己的杂七杂八的程序用绰绰有余了。

2.2. Cli 2.3. Gui 2.4. Nui natural user interface 阶段 3.1. 1. 命令行界面 CLI

命令行的用户行为模式,是 记忆->输入,用户要背下各个命令,单后输入同机器交互,使用门槛高,现在只有专业人士和好莱坞电影里要表现黑客们的牛逼才使用

 

:  EMAIL:1466519819@qq.com

 

 

3.2. Gui(click

 

3.3. Nui(touch

iphone及ipad的出现,将机器交互门槛大大降低,基本所有人包括老人小孩都能拿着就用。因为其交互语言发生了变化,不再是用标准化控件来设计界面,这时内容>形式,形式要依附信息内容的使用场景。符合人对内容表现和交互的自然预期,这样,界面引擎仅提供标准的控件就无法满足要求。

4. Gui的原理 解决两个问题,“输入”和“输出”

图形界面,就是解决两个问题,“输入”和“输出” “输入”就是用户通过键盘,鼠标,触摸屏 定制设备按钮等各种硬件装置进行的输入操作,通过这些设备的驱动,最后被操作系统转化为各种事件消息,图形界面要响应并管理好这些消息; “输出”就是显示,让用户看到的内容,图形界面最终要在屏幕上显示出来,需要操作系统提供这个接口,本质还是显示芯片的驱动提供这个功能。不考虑效率的话,给个画点的函数就够了。但画点肯定太慢,所以一般会是一个拷屏的上屏操作,用缓冲防止闪烁;  “获取输入消息”,“输出上屏”,这两点就是图形界面的“轮子”和“火”。两个方式都依赖操作系统提供的接口,而且不同操作系统的接口也不定相同,甚至同一操作系统也有不同的方法实现。对于跨平台图形界面引擎,这两部分的基本代码是不跨平台的,针对不同平台会有不同实现,但是这两部分代码不会很多,封装的好也不影响上层开发。

 

4.1. Gui的结构

GUI库,有几个基本的子系统:

 

4.2. 界面引擎和图形引擎

图形引擎和基本库</b><br>首先要说明的是,虽然经常说图形界面引擎,但界面引擎和图形引擎,这是两个不同的东西,就如同MFC和GDI,android UI库和skia的关系,图形引擎任务是提供基本的绘制方法,如何画位图,缩放位图,如何画线条 多边形等矢量图形,还有很重要的,如何绘制文字,这些依赖一些基本库,除非你想自己解析jpg png等图片格式,自己读取字体对文字进行矢量渲染。好在大部分这些库都是开源并且商业友好的(免费)<br>还有一些支持库,比如多线程,文件IO,数学算法。因此,一个图形界面引擎,有以下基本组成部分

系统 渲染机制 4.7. 动画 4.8. 一些杂项 utility

</b>基本框架稳定了,就要做一些比较常用的基本控件供应用层直接使用,按钮,列表,滑动条,进度条等<br><b>

特殊控件:</b>一些比较特殊的控件,比如模式对话框,弹出菜单,和常规控件的设计会有差异,他们基本需要全局管理。<br><b>

4.10. 编辑工具:

</b>是否需要图形界面的编辑工具,对于静态界面,就如windows的对话框,各种按钮,列表框,有一个所见即所得的编辑工具会提高界面开发效率

5. Ui的趋势cli>gui>nui

UI引擎,虽然会提供一套标准控件,但是更重要的,要满足两个需求

5.1.  方便使用的动态机制

使用者不用考虑定时器,多线程,异步处理等,能实现界面元素的各种属性动画

5.2.  方便的控件拓展机制

要更方便的定义一个新的控件,让使用者更专注于定义控件行为,而不用管控件的消息处理,绘制处理这两个层面的事情。之前的老HMI引擎,每次生成一个新控件,都要重载Draw和DoMessage两个方法,新的NUI引擎通过类似android库drawable层的封装,并引入信号槽机制,已可以像搭积木一样搭建控件,而不必再重写这两个方法

 

5.3. 脚本化(native>> html5)

NUI引擎基本达到这两个目标。开发门槛低,

 

6. 自己的ui 引擎

其实没有想象的复杂,只要抓住输入和输出两个线索。操作系统只需要给程序一个无边距窗口,窗口内允许贴图,窗口可以接受消息或事件,那么就可以发展出一套自己的GUI。

然后,你得定义一种逻辑概念,对应窗口,控件,Sprite,无所谓你自己决定....你的界面元素都是从这个概念逐层派生的,然后用Tree组织起来的。我的平台是用Sprite这个名称。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • SQL调优日记--并行等待的原理和问题排查 - owen zeng

    SQL调优日记--并行等待的原理和问题排查 - owen zeng

    2016-07-03 12:00

  • C#高级知识点(ABP框架理论学习高级篇)——白金版 - tkb至简

    C#高级知识点(ABP框架理论学习高级篇)——白金版 - tkb至简

    2016-04-15 17:00

  • 窥探算法之美妙——详细讲解寻找最长重复字符串的原理 - cotyb

    窥探算法之美妙——详细讲解寻找最长重复字符串的原理 - cotyb

    2016-02-24 14:21

  • 利用轮播原理结合hammer.js实现简洁的滑屏功能 - 流云诸葛

    利用轮播原理结合hammer.js实现简洁的滑屏功能 - 流云诸葛

    2016-02-02 10:46

网友点评