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界面的配置工具出现了,毕竟人们还是喜欢以直接的可视化的方式来修改服务器的配置,而不是再 ...
随机推荐
- Lakehouse 还是 Warehouse?(1/2)
Onehouse 创始人/首席执行官 Vinoth Chandar 于 2022 年 3 月在奥斯汀数据委员会发表了这一重要演讲.奥斯汀数据委员会是"世界上最大的独立全栈数据会议" ...
- beego go mod 模式下无法生成注解路由的问题 解决方法
执行 go get github.com/beego/bee 命令时将bee 命令一定要安装在gopath目录下.有idea或者goland编辑器是最方便的,只需要复制这条命令,然后进入编辑器会提示你 ...
- NOIP模拟55
T1 Skip 解题思路 正解给的是线段树维护单调栈,但是我不会.. CDQ 维护斜率可做!!! 先得出一个朴素的 DP 方程:设 \(f_i\) 表示最后一场是 i 的最优解. 转移方程就是 \(f ...
- itest work(爱测试) 开源一站式接口测试&敏捷测试工作站 9.0.3
(一)itest work 简介 itest work (爱测试) 一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest w ...
- 开发视频会议系统:使用GPU解码渲染视频
现在,使用视频会议系统远程协同办公.沟通交流,已经非常普遍了.如果我们要开发自己的视频会议系统,那么,GPU解码渲染技术是不可缺少的. 在视频会议系统中,经常需要同时观看会议中多个参会人员的视频图像, ...
- mysql windows 下配置可远程连接
1.在防火墙入站规则里加入 3306 端口,3306 为你安装mysql 时的端口. 2.在mysql 命令行中输入: #应用mysql数据库use mysql;#将root用户可访问改成所有upd ...
- 关于 ulimit 的两个天坑
稍微有点 Linux 经验的人一定会遇到过 "Too many open files" 错误,这个错误本质是 ulimit 设置不合理导致的.关于 ulimit 设置,有哪些需要注 ...
- ansible-role角色
官网文档 https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html 为什么要用role 之前你部署的n ...
- 记一次 .NET某游戏币自助机后端 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序内存会偶发性暴涨,自己分析了下是非托管内存问题,让我帮忙看下怎么回事?哈哈,看到这个dump我还是非常有兴趣的,居然还有这种游戏币自助机类型的 ...
- echarts柱状图横(x)轴文字显示不全,一招解决
柱状图底部X轴文字过长时,将会出现文字显示不全的问题,这是echarts为了美观默认的设置 现在我们把文章倾斜旋转点角度即可全部显示 以下是代码 scale() { var chartDom = do ...