####GUI是一个很大的话题,从Win32(windows基础API编程)到MFC,QT再到DuiLib,WPF,Winform再到Html这是一个很漫长的路,下面是我对这个界面库的见解 就对我而言,或者说目测软件开发,工具开发以及游戏开发等,GUI分为系统提供的API,以及窗口内自绘制两种。但涉及到具体类型,包括工具类软件,报表类,图表类 网页类甚至音视频渲染,以及游戏开发等众多领域, 本人均有涉及,至少略懂一二。 此界面库使用了OpenGL,最主要的目的是一是想跨平台,二是很好的嵌入到图形引擎中做交互,在此基础上实现杂七杂八的技能。

win32 : 使用windows最基础的接口实现界面库编程,每一个Control比如Label,text,Button都有一个类ID,linux中有类似的GTK+,不过接口要比这个好用。
MFC : 微软的C++界面库,从CDialog到SDI再到MDI,一路做完,发现MFC的强大之处到现在没有什么界面库能随随便便替代,但是他的开发也是及其复杂,特别是对界面比较友好的那种,MFC需要各种自定义控件,而且有刷新的问题
DirectUI : duilib,也有其他的商业版本,Soui等,使用微软的GDI绘制,从XML解析,在c++中提供了比较灵活的界面开发方式。其中自身的消息循环是一大亮点(相比于win32)还有消息映射(Duilib也有采用)
QT : 在windows端底层都一样的,对其自身分为QT4,QT5, 高端点的也需要QSS甚至QML开发,使用信号槽的凡是完成各种功能,而且对MFC的各种功能都有封装,是一个不错的库,根据使用经验,QT4一般被人当做界面库的使用,qt5则是一个非常强大的闭合的qt帝国,非常完善的API。 Winform : MFC的c#版本,很多情况会有效率问题,相对于win32更强大,c#也是微软的主推语言,很多逻辑和底层MFC类似。
WPF : 使用MVVM开发的,做出的界面很炫酷,后面微软也提供了UWP等开发,属于windows端比较好用的一个界面库。XAML中加载界面思想和Duilib有着异曲同工之妙,自身使用style来控制样式有brush,storyboard做动画,以及Bind可以绑定元素,还有和ControlTemplate实现控件模板实现各种功能的自定义控件。 HTML : HTML网页开发,从最基本的js开始到Canvas绘制,再到JQuery,以及VUE,element,mint等的开发,前者比较基础类似操作xml,后者类似于WPF做各种控件,体现了业务的变迁
网页开发客户端提供浏览器适配所做的界面比如Electron(逻辑线程与渲染线程的分离,和CEF本身一样),Duilib的CefWebControl控件等。页面灵活如果需要新窗口就很难受

多媒体类: SDL :支持游戏开发和音频播放以及视频渲染(支持多种像素格式),简单的2d小游戏以及音视频播放,ffmpeg的音视频教程用的这个,用起来简单方便。
DX9 :可以用来渲染视频。完善的工具集合DirectUI.

游戏类: 引擎中常用的mygui,cegui等 这个没怎么了解
GWen (Renderer专门的接口用来适配不同API,其他控件的Renderer也采用这个),sfml,imgui等这一类使用多种图形API OpenGL,DirectX控制绘制,自身组装控件逻辑,而这个界面库采用该种设计方式。
UE 的GUI,slot框架做的还不错,以及事件分发机制等。自己的蓝图和界面设计器也是一大特色,比如绑定,描点,各种布局容器以及灵活的功能
Unity 的UGUI:还没了解
当然除了以上这些还有一些基于业务级别的框架比如:Flutter,一些工作流,但是c++封装完整的工作流,类似的有boost,搜狗的workflow以及Poco(我的一个http库很好的借鉴了Poco,他对http中url的解析封装做的不错)。

虽然有以上这么多界面库,设计成自己喜欢的界面库并不容易,需要对每一种界面库都要熟练,达到采百家之长的境界。

有兴趣的先对其他的界面库多熟悉熟悉,遇到优秀的比较有特色的设计或者用法和大家分享。

GUI随笔的更多相关文章

  1. JAVA GUI随笔

    Java的布局管理器提供了一种层面的抽象,自动将用户界面映射到所有的窗口系统.GUI组件放置在容器中,它们的位置由容器的布局管理器来管理. 布局管理器是使用布局管理器类创建的. 注:同一个对象无论添加 ...

  2. 实训随笔2:Git Gui——拯救菜鸟的工具

    熟练使用git进行多人协作开发,是程序猿必备的专业技能之一,可惜我等实在太菜搞不来复杂的命令行. 幸好除了Git Bash还有一个Git gui存在——专门为了拯救我们这些菜鸡程序猿而存在的工具. 下 ...

  3. 做GUI的随笔

    用的SDL库 官方网站是:https://littlevgl.com/   改网站需要FQ 字库制作网站: https://debugdump.com/t_771.html

  4. 从一点儿不会开始——Unity3D游戏开发学习(二) ——GUI控件之Button

    一些废话 我在上一篇“一点儿不会”的系列随笔中说大概一周会发个2~3篇关于Unity的学习笔记.可这就两周过去了,我还停留在一篇的进度上,主要是这两周发生了一些事情导致我更新缓慢.其实截至目前为止,上 ...

  5. [随笔]利用云虚拟机和学校VPN实现校外访问校内站点(反向代理)

    探究背景简介: 大学校内站点一般不对外开放,个人认为原因有二: 一是站点内容受众就是大学师生: 二是站点基本无防御措施,在公网环境下容易发生意外情况. 至于为何不对外开放,不是这篇随笔探讨的重点,利用 ...

  6. Linux 桌面玩家指南:10. 没有 GUI 的时候应该怎么玩

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  7. CentOS7.0小随笔——指令基本操作(Part.A)

    与其说是CentOS7.0的小随笔,说老实话,基本指令在每个发行版本的Linux中都基本上是一致的. Part.A部分我们讲述以下四个方面:命令行界面与图形界面.Linux系统的关闭与重启.命令行帮助 ...

  8. Appium1.6 GUI界面介绍

    Appium1.6安装详见随笔:http://www.cnblogs.com/meitian/p/7360017.html   下面具体介绍一下GUI界面 1.appium server配置页面 2. ...

  9. “四则运算生成程序——GUI支持和部分功能改进”链接

    项目成员:张金生     张政 <正文随笔发布在张金生博客中> 四则运算生成程序——GUI支持和部分功能改进

  10. CentOS 7运维管理笔记(12)----GUI配置工具Webmin的安装

    早期的Linux系统管理员或是Web管理员在修改服务器配置时使用最多的就是vi编辑器,但是现在越来越多的基于GUI界面的配置工具出现了,毕竟人们还是喜欢以直接的可视化的方式来修改服务器的配置,而不是再 ...

随机推荐

  1. Django 的 ORM

    Django 的 ORM: 注意: 需要提前创建好数据库,Django不会自动创建数据库

  2. 一个简易的录屏demo

    MyScreenRecord.cpp //#define LOG_NODEBUG 0 #define LOG_TAG "myrecord" #include <signal. ...

  3. claude3国内API接口对接

    众所周知,由于地理位置原因,Claude3不对国内开放,而国内的镜像网站使用又贵的离谱! 因此,团队萌生了一个想法:为什么不创建一个一站式的平台,让用户能够通过单一的接口与多个模型交流呢?这样,用户就 ...

  4. 全网最全100个AI工具导航网站合集

    随着ChatGPT年前的爆火,人工智能也变成当今最热门的领域之一,它正在改变着我们的生活和工作方式.无论你是想要学习人工智能的基础知识,还是想要利用人工智能来提升你的业务效率和创新能力,都需要找到合适 ...

  5. 在 Flask 项目中配置 Session:简明指南

    在 Flask 项目中配置 Session:简明指南 本文介绍如何在 Flask 项目中配置会话 1. Flask 内置会话 Flask 自带会话管理功能,使用客户端 Cookie 存储会话数据.默认 ...

  6. 搭建高可用k8s

    搭建k8s高可用 高可用只针对于api-server,需要用到nginx + keepalived,nginx提供4层负载,keepalived提供vip(虚拟IP) 系统采用openEuler 22 ...

  7. 3代 I3 3220 对比12代 G6900 测试 入手 上手 评测

    3代 I3 3220 对比12代 G6900 测试 入手 上手 评测 I3 3220 的CPU-Z ,和cinebench r23 跑分. G6900 的CPU-Z ,和cinebench r23 跑 ...

  8. npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Program Files\nodejs\node_cache\_cacache\

    报错信息 让人摸不着头脑的报错 解决方式 简单粗暴 直接删文件 方法1:需要删除npmrc文件. 强调:不是nodejs安装目录npm模块下的那个npmrc文件 而是在C:\Users{账户}\下的. ...

  9. url编码和解码分析URLEncoder.encode和URLDecoder.decode

    url编码和解码分析 1.Get请求会将参数做默认的url解码操作,接口接收到的值是Get解码后的值.2.可以将Get操作修改成Post操作,这样不会url解码.可以在接口中做url解码.3.在多次传 ...

  10. Docker镜像下载慢/失败?Linux代理使用不便?想在无Docker环境下载镜像?试试我这款开源项目吧

    我要在这里放一段代码块 // 这是一段防爬代码块,我不介意被文章被爬取,但请注明出处 console.log("作者官网:https://www.hanzhe.site"); co ...