其特点是界面美观、占用资源少、运行效率高

    为了满足嵌入式系统的界面设计需求,给出了一种图形用户界面系统SKY-GUI的设计思路和其在嵌入式Linux环境下的实现方法。SKY-GUI有四大组成部分:输入抽象层、显示抽象层、事件系统和窗口系统。其特点是界面美观、占用资源少、运行效率高,现已应用于嵌入式视频监控项目。实验证明其设计思路可行,性能优良,适用于典型的嵌入式系统项目。

    嵌入式图形用户界面(GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿和使用感受。
    当前嵌入式系统中GUI的实现方式主要有两种:一是采用现有的GUI库;第二种是开发商基于嵌入式操作系统设计特有的GUI系统。采用第1种方式一般要对通用GUI库进行剪裁和个性化定制,也往往要支出额外的成本来获得软件授权。相对而言,第2种方法实现的GUI占用资源较小、容易满足嵌入式系统的实时性和个性化需求。
    本文采用第2种方式,在嵌入式Linux下使用C语言实现了一个界面美观、轻量级、占用资源少、执行效率高的图形用户界面系统SKY-GUI.本文的结构如下:第1部分介绍SKY-GUI的基本结构;第2部分给出具体的模块设计;第3部分给出其实验和测试结果;最后总结。
    1 SKY-GUI基本结构
    SKY-GUI系统的功能主要有以下四点:
    (1)接收各种输入设备的输入。
    (2)建立消息循环,将设备的输入翻译为抽象的事件。
    (3)建立窗口和控件对象系统,组织好各个抽象模块的关系,处理各种GUI事件。
    (4)将GUI对象通过具体形状显示在屏幕上,通过动画将系统的状态变化呈现给用户。
    基于这样的设计目标,SKY-GUI结构如图1所示。
    嵌入式Linux下的图形用户界面系统设计
    图1 SKY-GUI的整体架构
    它主要由输入抽象层、显示抽象层、事件系统和窗口系统四大部分组成。输入抽象层管理所有的输入设备,将用户的操作转化成消息送入事件系统。
    显示抽象层操作显示设备,提供给窗口系统绘画、贴图、显示字体接口。事件系统为窗口系统提供消息获取、存储和处理的机制。窗口系统是SKY-GUI的核心,定义了各种控件和窗口,描述它们之间的逻辑关系和消息循环关系。下面将分别对这四大组成部分的设计进行介绍。
    2 SKY-GUI模块设计
    2. 1输入抽象层
    输入抽象层为各种输入设备对事件系统的输入接口,它是一个单独的线程,其流程如图2所示。
    嵌入式Linux下的图形用户界面系统设计
    图2输入抽象层流程。
    输入抽象层首先对GUI所需的各种输入设备初始化,而后等待各个设备的输入。当接到设备输入,就把用户对设备的操作翻译成消息,送至事件系统最底层消息队列(在异2. 3. 2详细讨论)中。
    设备输入的翻译过程根据具体的输入设备而定。对于键盘,只要将其键值和该键的状态封成消息。对于鼠标,除了要记录其按键状态,还要根据鼠标当前的位置和屏幕的大小将输入的位移分量转化成鼠标的新位置封入消息。
    2. 2显示抽象层
    显示抽象层的作用是为窗口系统提供显示接口函数,包括基本图形接口(画点、画线、填充矩形、区域拷贝、Alpha混合等)、贴图接口和字体接口三大功能,其结构如图3所示。
    嵌入式Linux下的图形用户界面系统设计
    图3显示抽象层的结构。
    显示抽象层在嵌入式Linux下的基础设备为帧缓冲,对其按坐标写入或读出颜色值即可实现基本的图形接口的功能。
    简单的贴图功能用基本图形接口加bmp格式的文件(图片不经过压缩,其颜色分量按坐标顺序存储)就可以实现。为了让界面更加美观,SKY-GUI移植了开源的jpeg库和png库来解压相应格式的压缩图片文件,实现了对这两种图片格式的支持。
    对字体的支持当然必不可少。点阵字体把字体的位图按12伊12、16伊16等格式存入二进制文件,可以比较容易地实现字体接口,但字体不能随意放大缩小,且放大后字体有明显的锯齿。矢量字体用数学方程加字形上的关键点来描述字体,可以进行无级缩放,为界面的绘制带来极大的灵活性。SKY-GUI移植了开源的Freetype库,用其寻址矢量字体文件并生成字体位图,实现了对矢量字体的支持。
    2. 3事件系统
    事件系统为SKY-GUI的其他三大部分提供消息发送、存储、获取和处理的功能。其核心为消息、消息队列和消息处理函数。
    2. 3. 1消息定义
    SKY-GUI的消息定义为:
    typedef STruct __MSG {
    HWND hWnd;摇/ /窗口指针
    int event;摇/ /事件编号
    void* wParam;摇/ /事件附加参数1
    void* lParam;摇/ /事件附加参数2
    } MSG;
    hWnd为指向窗口的指针,表明此消息需要发给哪个窗口。event为事件编号,用不同的整数代表不同的事件。wParam和lParam为事件的附加参数,它们的含义根据事件类型的不同而定,例如,在鼠标消息中这两个参数就代表光标在屏幕上的坐标位置。
    2. 3. 2消息队列
    消息队列是事件系统中的消息的暂存处,它由一个环形先入先出结构的消息数组和一个消息链表组成。消息数组的空间是固定的,一旦被写满,后来的消息只好被丢弃;而消息链表则可以动态扩充大小。在SKY-GUI中,消息数组主要用来存放底层输入设备的事件(如鼠标、键盘、时钟等等),而消息链表主要用来存放优先级更高且不可丢弃的上层事件(窗口事件和显示事件)。
    2. 3. 3消息操作接口
    SKY-GUI定义了三类消息操作接口:消息发送函数、消息获取函数和事件处理函数。
    消息发送函数为输入抽象层和窗口系统提供消息发送接口,包括Post_Msg函数和Send_Msg函数,其作用都是向消息队列发送消息,不同之处在于Post_Msg发送的消息存入消息队列的数组之中,而Send_Msg发送的消息则存入链表之中。
    消息获取函数为Get_Msg函数,它为窗口提供取得消息的接口。拥有独立线程的窗口(异2. 4会描述其结构)调用它从消息队列中取得一个消息,其中存在链表中的消息更为重要,优先取出。
    事件处理函数是窗口处理消息事件的函数接口,在SKY-GUI中,拥有独立线程的窗口调用Dispatch_Msg函数来实现对自己消息处理函数的调用。
    2. 3. 4消息处理函数
    Dispatch_Msg只是事件处理的调用接口,窗口收到消息后所采取的具体措施是由消息处理函数决定的,其定义为:
    int WndProc(HWND hwnd, int event, void *wParam,void* lParam);
    每一个窗口都有一个函数指针指向自己的消息处理函数,其功能根据不同的窗口有所不同,但总体结构是一样的,如图4所示。
    嵌入式Linux下的图形用户界面系统设计
    图4消息处理函数的结构
    其本质上是一个消息处理的分类列表。当窗口调用消息处理函数时,其根据消息类型的不同分别调用底层输入消息、控件消息或显示消息的处理函数,而后再根据具体的消息事件调用相应的处理函数,实现对各种事件的响应。
    2. 4窗口系统
    窗口系统为SKY-GUI系统的核心,它维护了一个完整的窗口列表,定义了窗口系统和事件系统之间的关系,并制定了窗口之间的消息传递机制。


    萬豪娛樂賭場http://www.294866419.com/wanhaoyulecheng/
    天王國際娛樂城http://www.9261259.com/tianwangguojiyulecheng/

转载于:https://my.oschina.net/dahaidejia/blog/360988

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt界面优化项目优化主要是指通过对Qt应用程序的界面进行优化,提用户体验和程序的可用性。 在Qt界面优化项目中,首先需要优化应用程序的界面布局和设计。良好的界面设计可以让用户更加轻松和愉快地使用应用程序。此外,还需要进行控件的优化,比如调整控件的尺寸、颜色和字体等,以便更加符合用户的使用习惯和审美观。 其次,还需要进行界面交互优化。通过增强用户与应用程序之间的互动方式,使用户更方便地使用应用程序。比如,添加更多的鼠标提示信息,让用户更明白应用程序的功能;增加快捷键,使用户更快速地完成任务等。 除了界面和交互方面的优化,还需要对程序的性能和质量进行优化。这包括程序的响应时间、稳定性、安全性等方面。这需要通过对程序的代码进行优化,比如使用更效的算法、减冗余代码等方式,以提程序的性能和质量。 综上所述,Qt界面优化项目优化主要是针对Qt应用程序的界面和交互进行改进,并通过优化程序的性能和质量,提用户体验和程序可用性。 ### 回答2: Qt界面优化项目优化是对一个已有的Qt界面项目进行优化和改进,目的是提升界面的交互性,增强用户体验。该项目主要通过以下几个方面实现: 1. 界面设计方面:根据用户反馈和需求,重新设计界面,优化布局和色调,让用户操作更加直观和流畅。 2. 优化控件方面:通过改进UI控件,让用户操作更加便捷和效。比如,增加搜索框、下拉选项、快捷键等,减用户操作的步骤和时间。 3. 优化性能方面:对程序的运行速度和响应时间进行优化,让用户操作更加流畅和快速。通过减不必要的计算和请求,优化程序内存和资源的使用。 4. 增强功能方面:在保持原有功能的基础上,增加新的实用功能,提用户的操作效率和体验。 5. 兼容性和稳定性方面:确保程序在不同的操作系统环境中可以正常运行,并修复已知的bug,保证程序的稳定性和可靠性。 Qt界面优化项目优化需要对现有程序进行全面的分析和评估,针对现有问题进行有针对性的优化。通过不断的迭代和改进,最终实现要求的优化目标,提升用户体验和程序质量。 ### 回答3: Qt是一种跨平台的图形用户界面(GUI)框架,用于开发应用程序的图形界面。Qt界面优化项目优化是指对Qt框架下应用程序的图形界面进行优化,以达到更好的用户体验和更效率。 Qt界面优化项目优化通常包括以下方面: 1.美化界面,改善用户体验。利用Qt提供的丰富的界面控件和样式表,设计出美观、直观、易用的界面,以吸引更多的用户使用和喜爱该应用程序。 2.提响应速度,增强应用程序的稳定性。对界面的渲染效率进行优化,采用异步加载等技术手段,降低加载时间和CPU占用率,提界面的响应速度和应用程序的稳定性。 3.优化代码结构和模块化设计,提升开发效率。调整应用程序的代码架构,使之更好地符合设计模式和代码规范,减代码冗余和模块耦合,提升开发效率。 4.对不同平台进行定制化设计。针对不同平台的不同特性和用户需求,进行针对性的界面设计和优化,以得到最佳的用户体验和应用程序性能。 综上所述,Qt界面优化项目优化是对应用程序界面的综合优化,以提用户体验、提升开发效率和提应用程序性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值