GUI随笔
####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随笔的更多相关文章
- JAVA GUI随笔
Java的布局管理器提供了一种层面的抽象,自动将用户界面映射到所有的窗口系统.GUI组件放置在容器中,它们的位置由容器的布局管理器来管理. 布局管理器是使用布局管理器类创建的. 注:同一个对象无论添加 ...
- 实训随笔2:Git Gui——拯救菜鸟的工具
熟练使用git进行多人协作开发,是程序猿必备的专业技能之一,可惜我等实在太菜搞不来复杂的命令行. 幸好除了Git Bash还有一个Git gui存在——专门为了拯救我们这些菜鸡程序猿而存在的工具. 下 ...
- 做GUI的随笔
用的SDL库 官方网站是:https://littlevgl.com/ 改网站需要FQ 字库制作网站: https://debugdump.com/t_771.html
- 从一点儿不会开始——Unity3D游戏开发学习(二) ——GUI控件之Button
一些废话 我在上一篇“一点儿不会”的系列随笔中说大概一周会发个2~3篇关于Unity的学习笔记.可这就两周过去了,我还停留在一篇的进度上,主要是这两周发生了一些事情导致我更新缓慢.其实截至目前为止,上 ...
- [随笔]利用云虚拟机和学校VPN实现校外访问校内站点(反向代理)
探究背景简介: 大学校内站点一般不对外开放,个人认为原因有二: 一是站点内容受众就是大学师生: 二是站点基本无防御措施,在公网环境下容易发生意外情况. 至于为何不对外开放,不是这篇随笔探讨的重点,利用 ...
- Linux 桌面玩家指南:10. 没有 GUI 的时候应该怎么玩
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- CentOS7.0小随笔——指令基本操作(Part.A)
与其说是CentOS7.0的小随笔,说老实话,基本指令在每个发行版本的Linux中都基本上是一致的. Part.A部分我们讲述以下四个方面:命令行界面与图形界面.Linux系统的关闭与重启.命令行帮助 ...
- Appium1.6 GUI界面介绍
Appium1.6安装详见随笔:http://www.cnblogs.com/meitian/p/7360017.html 下面具体介绍一下GUI界面 1.appium server配置页面 2. ...
- “四则运算生成程序——GUI支持和部分功能改进”链接
项目成员:张金生 张政 <正文随笔发布在张金生博客中> 四则运算生成程序——GUI支持和部分功能改进
- CentOS 7运维管理笔记(12)----GUI配置工具Webmin的安装
早期的Linux系统管理员或是Web管理员在修改服务器配置时使用最多的就是vi编辑器,但是现在越来越多的基于GUI界面的配置工具出现了,毕竟人们还是喜欢以直接的可视化的方式来修改服务器的配置,而不是再 ...
随机推荐
- Android 12(S) MultiMedia(十一)从MPEG2TSExtractor到MPEG2-TS
本节主要学习内容是看看MPEG2TSExtractor是如何处理TS流的. 相关代码位置: frameworks/av/media/extractors/mpeg2/MPEG2TSExtractor. ...
- WPF开发快速入门【5】DataGrid的使用
概述 DataGrid是最常用的一种列表数据展现控件,本文介绍DataGrid的一些常用操作,包括:展示.新增.删除.修改等.以下代码基于Stylet框架实现. 数据展示 DataGrid用于对象列表 ...
- SwiftUI(二)- 页面导航NavigationLink和Sheet窗口(模态视图)
NavigationLink 官方文档对NavigationLink的定义: A button that triggers a navigation presentation when pressed ...
- Qt-数据库操作MySql
1 简介 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=87 说明:本文简单说明在Qt中操作数据库,用MySql数据库进行试验. Qt 提供了 ...
- css制作骰子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- UDP 发送两遍对比一致能绝对判定发送过程成功传递完整数据吗
UDP 发送两边对比一致,能确定数据传输无错误吗 对比两条相同数据的MD5 这样做可行吗
- chrome edge CORS 允许跨域
edge: edge://flags/#block-insecure-private-network-requests chrome: 在谷歌浏览器地址栏输入"chrome://flags/ ...
- C# .NET 云南农信国密签名(SM2)简要解析
BouncyCastle库(BC库)与云南农信最大的区别是 : BC库 SM2Signer.Init() 方法比云南农信多了最后3行代码: digest.Reset(); z = GetZ(user ...
- 记一次 React context 使用
学习 React 之 Context 使用 记录一次React context 使用 React.createContext Api 新建文件 contexts.js 文件用来存放 context 对 ...
- php+sql后台实现从主表迁出至副表(数据超万条)
上万条甚至上百万数据进行迁出做备份或者进行不妨碍原系统数据的操作,现在很多企业都会用到,目前就需要将上百万条数据进行迁出到副表保存并操作,直接再后台写一个按钮进行操作,既方便操作也不会很慢.毕竟是客户 ...