1.用户界面原理和界面库编程模型

您所在的位置:网站首页 雷达界面设计原理是什么 1.用户界面原理和界面库编程模型

1.用户界面原理和界面库编程模型

2024-07-11 04:23| 来源: 网络整理| 查看: 265

从最早的图形用户界面操作系统Apply Lisa,到空前的windows 1.0,再到最新的Windows、苹果、Linux操作系统,图形用户界面已经是个人电脑不可缺少的部分。图形用户界面的发展是建立在成熟的图形学基础上的,本系列文章主要依托Windows 平台下的C++界面库来揭秘图形界面库原理,全方位的展现Windows界面库的发展历程和一个界面库是如何构成的。采用C++是因为系统提供的原生图形界面编程接口都是基于C/C++的,其他的语言接口均是在此基础上做的包装,但是本文介绍的技术并不局限于Windows和C++,所有界面库的原理基本都是通用的。

用户界面原理

简单思考下图形用户界面是什么?如下,做过DOS下图形界面的,很容易发现图形用户界面的基本元素就是线框,现代界面也只是在此基础上加上各种阴影、圆角、填充等等,而处理鼠标和界面交互的原理就是判断鼠标和这些线框的位置关系。实际上Window 3.1之前,整个图形界面的底层还是跑在DOS上。

再思考下,电脑屏幕能够显示图像的原理是什么呢?如下,将屏幕做个简化,就类似LED显示屏,每个像素对应一个显示LED,显示对应的图像就是将图像栅格化后按照颜色设置对应像素点像素值,只不过CRT或液晶显示屏的像素密度更高,刷新频率更高而已。

 虽然显示原理是栅格化,但是实际显示时我们不可能手动去输入栅格化后的点阵,因此必须有一种方法把图形界面的各种基本元素直线、曲线、圆、椭圆、字体等映射为栅格化点阵,这就是图形学研究的内容,事实上图形界面的发展和图形学发展是离不开的。用户界面的实现包括底层驱动的支持和应用层的支持,一般驱动层支持基本图形元素的绘制,应用层再包装来支持复杂图形绘制。现代操作系统图形绘制常用基本元素基本都已经集成到驱动中,绘制效率非常高,而且针对一些特殊图形绘制做了优化,在游戏等对绘制效率和2D/3D特效要求高的场景,现代显卡都针对OpenGL和DirectX等在驱动层做了优化,Windows更是将图形子系统移到内核模式(如下)。

 

既然显卡驱动提供了基本元素的显示,那么为了完成用户界面我们需要做的就是调用这些基本元素,绘制图形界面,然后监听用户操作事件作出对应响应即可,这就是操作系统负责做的事情。其实原理就是这么简单,看看最原始windows (如下),实际上也就是这么简单封装。

界面库编程模型

那么界面库的作用是什么?经典Windows中基本功能放在两个模块中——user32.dll和gdi32.dll,前者提供窗口创建和消息传递监听,后者提供直线、曲线、圆等元素绘制功能,这也是现在通用界面库提供的基本功能,在这些功能基础上用户即可构建自己的界面程序,界面库的功能在于提供接口给开发者,开发者按照指定的模式绘制和填充事件响应即可完成界面程序编写。因此常见的编程模型如下:

设计和创建界面:对于系统原生界面库来说,一般是代码创建,一些高级界面库(Qt、WPF等)支持从xml/xaml创建,web前端使用html声明创建。

循环等待和分发事件:这和具体的实现和场景有关系,Win32是基于消息循环,Qt中抽象成了信号槽事件循环,他们都是在主线程中响应事件,而java的awt、前端dom事件等为了安全和界面响应敏捷,将事件分发到了一个单独线程中,用户都是在另外线程中响应事件。

 

文中相关图片均引用自互联网,如有侵权请留言说明。

原创,转载请注明来自http://blog.csdn.net/wenzhou1219



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3