首页 » 网站推广 » php合适什么引擎技巧_Z站推荐GUI 引擎评价指标

php合适什么引擎技巧_Z站推荐GUI 引擎评价指标

访客 2024-11-18 0

扫一扫用手机浏览

文章目录 [+]

github上的开源 GUI 引擎至少有数十个,如何去评估它们的利害,如何选择你须要的GUI引擎?这个是艰巨的任务,每个人的需求不一样,GUI开拓者的意图也不同,很难找到统一的标准去选出最好的GUI。

QT是最强大的,没有之一,但也不一定适宜你。
在这篇文章有句话:“商业引擎看起来功能很完好,但是实际利用起来你就知道有多少坑。
” 这句话挺故意思,它即适宜游戏引擎,也适宜GUI引擎。
demo看起来很好,技能看起来很前辈,用起来才知道有多少坑!
以是事先做一个完全的评估是很有必要的。

php合适什么引擎技巧_Z站推荐GUI 引擎评价指标

虽然客不雅观的评价一个GUI引擎很难,但不管怎么样,总有些指标可以供应有代价的参考,只管这些指标在碰着不同利用的场景,不同的公司背景,不同的个人喜好,它们所占的权重也大不相同。
但是并不能抹杀这些指标的代价,关键在于如何根据自己的须要调度它们的比重。

php合适什么引擎技巧_Z站推荐GUI 引擎评价指标
(图片来自网络侵删)

在这篇《这个开源的6千行UI框架,能打败QT,MFC吗?》文章里,诸葛不亮的37问给了我极大的启示,在开拓AWTK的过程中,多次重读这篇文章,这篇文章堪称是GUI引擎开拓者的指路明灯。

如果诸葛大侠不介意,为了生动气氛,我就把本文提到的指标称为《诸葛不亮-李先静 GUI 引擎评价指标》,把诸葛大侠放在前面,是表示对他的感谢,把我的名字放在里面,是由我承担一些人的责怪。

基本指标

1. 开拓者的心态当你用他们的 GUI 时,他们是感谢你的支持,还在以为你欠他们的呢?如果他们没有心存感谢,你最好别用。
否则,碰着问题时,你怎么能指望他们帮你办理呢?

2. 帮助文档是否有《API 手册》、《利用手册》、《常见问题》、《移植文档》和《HowTo》,文档是否在定期更新?

3. 示例代码是否有大略的入门示例、各种控件的的用法、完全功能的示例?

4. 代码风格目录名、文件名、类名、函数名、函数参数、局部变量名、全局变量名、注释和缩进是否同等。

5. 编程措辞目前支持哪些开拓措辞?支持新的开拓措辞是否随意马虎?编程风格是否与对应的措辞符合?不同措辞绑定的代码能否同步更新(否则很随意马虎掉队于核心引擎)?

对付 GUI 引擎来说,支持多种编程措辞是主要的,可以知足不同的开拓者的须要。
对付利用者来说,GUI 是否供应了你须要的编程措辞才是最主要的。

6. 支持的平台对付 GUI 引擎来说,支持多种平台是主要的,可以知足不同的开拓者的须要。
对付利用者来说,支持多种平台也是主要的,你现在开拓嵌入式系统,过段韶光你可能要开拓一个 APP 掌握你设备,没有必要摧残浪费蹂躏韶光去学习不同的 GUI。
GUI 是否支持目标平台的界面风格,是否供应跨平台的运行库,是否对平台基本的原生功能进行了包装,能否扩展新的功能。
是否支持平台原生输入法?

7. 可视化的界面设计工具

所见即所得办法开拓界面可以降落学习门槛,提高开拓效率。

8. 可视化的界面设计工具是否是用该 GUI 本身开拓的用该 GUI 本身开拓的界面设计工具,可以验证该 GUI 本身的功能是否强大和稳定。
其余用该 GUI 本身开拓的界面设计工具,才能把界面设计工具做得易用。
比如 TabControl 控件,在设计时可以切换页面,只有用该 GUI 本身开拓的界面设计工具才随意马虎实现。

9. 在开拓环境仿照运走运行环境和开拓环境每每不同, 如果每次都要支配一下才能看到效果,那开拓速率一定上不来。

10. 用 XML/JSON 等数据来描述界面XML/JSON 是声明式的语法,不但手工编写比写程序随意马虎,也方便借助工具的支持。
对付嵌入低端嵌入式系统来说,XML/JSON 效率不高,最好的办法是运行时转换成高效的二进制格式。
就像代码一样,编译之前的代码给人看,编译之后的代码给机器看。

11. 用 XML/CSS 等数据来描述界面的风格XML/JSON 是声明式的语法,不但手工编写比写程序随意马虎,也方便借助工具的支持。
把界面风格从 UI 描述文件和代码中剥离出来,也有利于后期的掩护,毕竟界面效果是最随意马虎变革的。
对付嵌入低端嵌入式系统来说,XML/JSON 效率不高,最好的办法是运行时转换成高效的二进制格式。
就像代码一样,编译之前的代码给人看,编译之后的代码给机器看。

12. 字体格式支持点阵字体吗?支持矢量字体吗?支持自定义字体格式吗?支持只加载部分字体到内存吗?配套工具完善吗?

13. 图片格式支持常见的 png/jpg/gif/bmp 格式吗?支持 SVG 等矢量图形吗?能扩展支持新的格式吗?

14. 输入法

支持拼音输入法吗?支持软键盘的 T9 输入法吗?支持硬键盘的 T9 输入法吗?支持语音输入法吗?支持手写输入法吗?可以扩展支持新的输入吗?是否支持平台原生输入法?

15. 基本架构模式是否内置供应支持 MVC、MVP 和 MVVM 等架构模式?是否支持 Vue、React 和小程序类似的开拓办法?

功能指标

1. 高清屏

是否支持高清屏?在 PC 上运行时界面变糊了,在手机上运行时字体变小了,都是不支持高清屏的特色。
不支持高清屏就不用谈什么跨平台了。

2. 矢量图 API矢量图 API 是非常主要的,强大矢量图 API 能实现很多神奇的效果。
个人以为 HTML5 Canvas 2D API 是最好的矢量图 API。
用 cairo、skia、agge 和 nanovg 这些开源的库很随意马虎实现类似的 API。
GUI 一定要供应一个抽象的接口,在不同的情形下,可以无缝的切换到最优的实现方案上。
比如在嵌入式平台用 agge,在嵌入式 linux 平台用 cairo,在 PC 上用 skia 或 nanovg。

3. 窗口动画是否支持窗口动画?窗口动画的种类是否够用?是否可以扩展自己的窗口动画。
窗口动画的效率如何?窗口动画利用是否方便?

4. 控件动画是否支持控件动画?支持那些控件动画?是否支持自定义的控件动画?控件动画利用是否方便?控件动画的参数有哪些?是否可以停滞、停息和播放控件动画。

5. 内置控件是否丰富是否有日历选择控件?是否有文件选择控件?是否有颜色选择控件?是否有 RichText 控件?是否有你目前须要的控件和将来可能用到的控件?

6. 控件组合是否方便有的 GUI 把控件分成叶子节点控件和容器控件,label、image、edit 和 button 都是叶子节点控件。
这样做灵巧性很差,往 button 放个图片或者动画,往 label 里放个图片,往 edit 里放一个"打消"/"查找"的 button,不是方便的事吗,为什么要限定呢?

7. 自定义控件没有一个 GUI 能够知足所有的需求,如果不支持自定义控件就悲催了。
这样一个大略的须要,在有的 GUI 里却须要修正 GUI 引擎的代码,那就不好玩了。

8. 布局 (layout) 参数通过布局参数掌握控件布局,可以让运用程序适用于不同大小的屏幕。
是否支持布局参数,布局功能是否强大,是否可以扩展自定义布局?

9. 控件自定义属性如果控件支持自定义属性,用户可以存放自己的数据到控件中,可以避免利用全局变量,是个极为方便的特性。
如果控件支持自定义属性,对 GUI 进行扩展也很方便,比如 AWTK-MVVM 的绑定规则就利用了用户自定义属性,如果将 AWTK-MVVM 移植到 Qt 就很随意马虎,由于 Qt 也支持自定义属性,要移植到 emwin 就麻烦不少。

10. 控件:labellabel 是最大略的控件,要做好也不随意马虎。
就像炒饭是厨师的基本功一下,label 便是 GUI 开拓者的基本功。
支持 style(字体、颜色和对齐等各种参数)吗?支持 unicode 的换行规则吗?支持滚动显示吗?支持省略号显示吗?支持 bidi 算法吗?支持动画(比如打字效果和拨号中那种)。
滚动显示支持得到焦点时才滚动吗?支持垂直方向排版吗?当然把 label 和 scroll_label 分成两个控件好点,实现大略而且在低端平台无需支持一下不必要的特性。
总之,用户须要时就要有这些功能。

11. 控件:image支持旋转和缩放吗? 支持旋转和缩放动画吗?支持居中、平铺、x 平铺、y 平铺、九宫格、三宫格、缩放和按比例缩放等各种绘制效果吗?支持显示文本吗?支持点击吗?支持勾选吗?

12. 控件:edit支持 edit 不难,要做好却不随意马虎:支持拷贝、剪切和粘贴吗?支持撤销和重做吗?支持通过键盘和鼠标选择吗?支持输入法吗?可以根据各种输入类型自动选择软键盘吗?可以自定义软键盘吗?可以指定得到焦点时软件盘是否自动开启吗?可以指定获失落去焦点时软件盘是否自动关闭吗?支持设置有效性检讨函数吗?支持失落去焦点时自动修复输入值吗?支持失落去焦点时提示输入有误吗?支持输入提示吗?支持输入有变革时提示吗?支持韶光、日期和 IP 地址等格式输入吗?

13. 控件:button是否支持长按?是否支持设置长按韶光?是否支持重复触发?是否支持图标?是否支持子控件(如图片和动画)?

14. 控件:软键盘软键盘利用 XML/JSON 描述吗?可以定制软键盘(键盘布局和风格)吗?定制软键盘须要修正代码吗?软键盘可以用纯方向键切换焦点吗?

15. 控件:table view支持放入进度条、选择框、按钮、图片和编辑器吗?支持 View 和 Model 分离吗?能支持千万级别的数据吗?

16. 控件:code editor有些高手常用两个指标来衡量 GUI 的功能:1. 能用它开拓一个记事本吗?2. 能用它开拓一个界面设计器吗?如果支持 code editor,就可以用它实现一个功能更强大的记事本。

17. 控件:html viewHTML View 可以用来实现在线帮助、报表预览功能或者一些分外的界面效果。

18. style是否支持设置圆角半径?是否支持对部分角设置圆角?是否可以分别设置高下旁边的边框?是否支持自定义的状态?

19. 对话框高亮弹出对话框时:是否支持对话框背景变暗?是否支持对话框背景动态变暗?是否支持对话框背景动态变模糊?是否支持新的对话框高亮策略。

20. 键盘切换焦点是否支持键盘切换焦点?是否支持高下旁边切换焦点(有的设备只有方向键和确认键)?是否支持设置切换焦点的键值?

21. 截屏是否支持截屏?

22. 操作反馈是否支持按键音?不同的控件支付支持不同的按键音?是否支持触屏震撼?

23. Accessibility是否支持字体整体放大?是否支持读屏软件?

24. 存储接口有没有供应跨平台的存储接口,如文件系统、配置信息和数据库。

25. 资源管理有没有统一的资源管理接口?资源管理也是很麻烦的事情:比如图片,它可能存放在 flash 中,可能存放在文件系统中,也可能放在做事器上;对付普通屏和高清屏须要加载不同的文件;不同的措辞也可能须要加载不同的文件;同一个软件在不同的系统上运行,可能要加载不同的格式,有的系统只能利用位图,有的系统可以利用 png/jpg;图片还需缓存,缓存还须要清理。
所有这些东西,如果让运用程序来处理,那将是一场噩梦!
强大的资源管理器,可以屏蔽所有这些细节,让运用程序无需感知。
比如,你须要"earth"这个图片,你无需关心它的位置和格式,无需关心屏幕密度和措辞的影响,系统自动加载最佳的图片文件。

26. 事宜处理流程事宜有没有区分 Bubbling 和 capturing 阶段?事宜在不同阶段是否可以中止实行?是否有 pointer down abort 或 pointer down cancel 之类的事宜?

27. framebuffer是否支持单 framebuffer?是否支持双 framebuffer?是否支持 3 framebuffer?是否支持 fragment framebuffer? 是否支持单色屏?是否能支持各种分外的格式的 framebuffer? 是否支持 SPI 等分外硬件的屏?

28. 光标在非触摸屏的系统中,光标仍旧是必不可少的功能。
是否支持设置光标?是否支持根据当前的控件自动切换光标?是否支持根据当前的状态切换光标?

29. 窗口置顶是否支持将指定窗口置顶?

30. 窗口管理是否支持打开窗口时关闭当前窗口?是否支持将打开的窗口提到前台?是否可以关闭指定的窗口?是否支持回到 Home 窗口?是否可以设置窗口的关闭特性(唯一实例、禁止关闭、直接关闭和须要确认后关闭)? 对话框是否支持模态和非模态?

31. 根本库是否强大是否供应了强大而且跨平台的根本库?特殊是 C 措辞开拓,字符串、动态数组、链表、工具、事宜发射器、定时器、字符串编码转换、文件、线程、互斥锁、旗子暗记量、韶光、日期、动态库加载、共享内存和各种流的抽象都是非常有用的,如果供应一套稳定可靠的根本库,可以大大降落运用程序的开拓本钱。

32. 是否支持屏幕旋转在没有 GPU 的情形下,屏幕旋转会大幅降落性能,该当只管即便避免屏幕旋转。
但是在项目早期,在买来的开拓板上开拓,确实可能有旋转的需求,如果 GUI 支持旋转,也是很方便的。
在 Android/iOS 上,有些运用横屏利用更加方便,对付一个跨平台的 GUI,支持动态旋转无疑也是加分项。

33. 是否支持盛行的动画格式如果支持 rive 和 lottie 等盛行的动画格式,在运用程序中直接播放这些动画,那么美术输出的动画可以无缝的对接到运用程序中来。
可以让运用程序做得更酷更炫,同时不会增加开拓的事情量。

性能

1. 高效的算法

是否支持脏矩形算法、3 framebuffer 和 二进制格式。
开拓时利用 XML 方便程序员修正,运行时利用高效二进制格式提高运行效率。

2. 2D 硬件加速

是否支持常见的加速接口,如 STM32 的 DMA2D 和 NXP 的 PXP。
厂家是否可以扩展自己的加速接口。

3. 3D 硬件加速是否支持 OpenGL、DirectX、Vulkan 和 Metal 等。

4. 低端平台最低能支持什么样的硬件平台?功能强大体积常日比较大,这对 GUI 的可配置性是一个极大的磨练。

5. 启动韶光1 秒启动?5 秒启动?还要等半分钟?

国际化

1. Unicode

是否支持 UTF-8 和 UTF-16 编码?

2. 多国措辞输入法

是否支持 T9 输入法?是否可以支持新的输入法?

3. 字符串翻译

是否支持字符串翻译?是否支持实时切换措辞(不需重启)?

4. 图片翻译是否支持图片翻译(既切换措辞时,自动切换某些图片)?

5. 笔墨双向排版

是否支持阿拉伯笔墨的双向排版?

6. 编码转换函数

是否供应的跨平台的编码转换函数?

软件质量

1. 单元测试

是否有完全的单元测试?单元测试是否全部通过?

2. 内存耗尽处理流程内存耗尽时是直接崩溃?还是让运用程序能优雅的退出?

3. 内存透露检讨机制是否有内存透露检讨机制?是否能用 valgrind 进行内存透露和溢出检讨?

4. 代码静态检讨是否通过了 cppcheck、infer 或其它静态检讨工具的检讨?

5. 事宜录制和重放功能是否可以录制用户操作的事宜,并通过重放进行压力测试?

6. Appuim 进行自动测试是否支持 Appuim,通过 javascript 等脚本自动化集成测试?GUI 引擎本身是否有回归测试用例?

【版权声明】文章为ZLG开拓者社区用户原创内容,未经授权不得转载,点击“阅读原文”查看原文。
欢迎更多用户到社区互换互动、创作博文,一经采取,可得到百元京东E卡。

地址:https://developer.zlg.cn(长按复制到PC端打开)

标签:

相关文章

介绍直播新纪元,轻松进入直播的五大步骤

随着互联网技术的飞速发展,直播行业在我国逐渐崛起,越来越多的人选择通过直播这一新兴媒介展示自己、分享生活、传递价值。对于许多新手来...

网站推广 2025-01-03 阅读1 评论0

介绍相机美颜原理,科技与美学的完美结合

随着科技的发展,智能手机的摄像头功能日益强大,美颜相机成为了许多人拍照的首选。美颜相机不仅满足了人们对于美的追求,更在视觉上给人带...

网站推广 2025-01-03 阅读1 评论0

介绍磁铁的制造,科学与艺术的完美结合

磁铁,一种神秘的物质,自古以来就吸引了无数人的目光。它不仅具有独特的磁性,还能在工业、医疗、科研等领域发挥重要作用。磁铁是如何制造...

网站推广 2025-01-03 阅读1 评论0

介绍电瓶激活方法,让电池焕发新生

随着科技的不断发展,电动汽车逐渐成为人们出行的首选。而电瓶作为电动汽车的核心部件,其性能直接影响着车辆的续航里程和行驶体验。新购买...

网站推广 2025-01-03 阅读1 评论0