ExDirectUI 5.0 项目重构正式启动
转自 暗の魔法使 博客:https://blog.csdn.net/jsntzsy/article/details/88554543 作者:ExDirectUI 诺诺
在前期做了一两个月所需技术储备和代码架构等准备工作后,ExDirectUI 5.0 项目(以后统称5.0)的重构于今日正式启动,今后我会在此博客持续更新开发进度和心得,没有特殊原因的话更新频率约为每周一到两次,欢迎大家一起讨论和督促。
今天我先将5.0前期收集到的需求及所设想的架构向大家阐述,欢迎大家提出建议意见:
ExDirectUI 5.0 需求
- 内置控件的无窗口句柄化,采用逻辑控件模式而非直接派生于Windows控件,避免外部程序直接采用WinAPI操作;
- 绘图采用Direct2D/GDIPlus双引擎进行绘制,所提供的绘图接口做到用户透明,引擎绘制出的效果尽量保持一致;
- 控件系统支持动画机制,内置支持透明度、位移等动画变换,支持动画进度缓动机制,提供自定义动画的接口;
- DLL接口采用句柄+消息+函数操作,并根据需求再在此基础上封装面向对象的类库,函数接口类似WinAPI相关函数;
- 支持通过XML/JavaScript创建、操作窗口及控件,并提供接口于主程序交互;
- 支持主题包、资源包、风格文件,主题包支持单独设置(可以设置到控件级),资源包支持加载入口脚本;
- 支持提取窗口、控件的当前位图(支持透明通道);
- 支持 MSAA、I18N、Drag&Drop、DPI自适应 等功能;
- 支持控件容器的布局机制,初步设想提供线性布局、流式布局、表格布局、页面布局、相对布局、绝对布局,并提供接口支持自定义布局。
- 除了Windows原生支持的常用图像格式外,另外支持APNG格式实现支持透明通道的动画图像格式。
- 列表、树等数据类控件支持数据适配器绑定,支持从XML、数据库、内存等方面自动处理表项数据。
- 提供窗口(Window)、对话框(Dialog)、消息框(MessageBox)、菜单(Menu)、弹出式窗口(PopupWindow)。
- 支持对控件和图像进行圆角化、蒙版、模糊、色调调整等操作。
- 支持无边框、不透明、分层、高性能(D2D/Win8以上支持)等窗口模式。
- 控件包括消息和事件两部分,其中事件由消息产生,支持控件的子类化和超类化。
- 控件的事件依次通过自身、JS、单独绑定的回调函数、直接父控件、间接父控件(允许事件冒泡)、所在窗口的分发层级,所有层级均可拦截。
- 控件支持跨窗口置父。
- 提供所见即所得的 ExDirectBuilder 界面工程编辑器(待引擎功能基本完善后开始实施该项目),主要功能包括:拖拽式的窗口布局开发、界面开发支持设置容器布局、支持控件挂接JS事件和编辑脚本、支持绑定数据适配器、支持界面预览、支持主题包/资源包/风格文件的编辑、支持工程整体打包为资源包、支持生成创建代码和事件接口等,次要功能包括:现有界面自动抽取、宫格贴图矩形生成、颜色拾色和配色推荐、界面SPY调试工具等。
- 完备的开发帮助文档和例子源码,并随引擎版本更新。
ExDirectUI 5.0 初步架构
根据需求分析及之前版本的经验,初步设计了如下工程架构(此为初步设想,编写过程中可能会适当调整):
1. 绘图模块(Drawing)
1.1 画布(Canvas)
1.2 图像(Image)
1.3 矩阵(Matrix)
1.4 路径(Path)
1.5 区域(Region)
1.6 字体(Font)
1.7 画刷(Brush)
1.7.1 纯色画刷(SolidBrush)
1.7.2 线性渐变画刷(LinearBrush)
1.7.3 径向渐变画刷(RadialBrush)
1.7.4 纹理画刷(TextureBrush)
2. 资源模块(Resource)
2.1 主题包(ThemePacket)
2.2 资源包(ResourcePacket)
2.3 风格文件(StyleSheet)
3. UI模块(UIElements)
3.1 窗口(Window)
3.2 皮肤(Skin)
3.2.1 菜单(Menu)
3.2.2 消息框(MessageBox)
3.3 控件(Controls)
3.3.1 基础控件集(BaseSet)
3.3.2 容器控件集(ContainerSet)
3.3.3 数据控件集(DataSet)
3.3.4 视觉控件集(VisualSet)
3.3.5 框架控件集(FrameSet)
4. 功能工具模块(Utils)
4.1 DPI自适应机制(DPI Adaptive)
4.2 缓动机制(Easing)
4.3 动画机制(AutoAnimation)
4.4 拖放机制(Drag&Drop)
4.5 数据适配器机制(DataAdapter)
4.6 多语言机制(I18N)
4.7 容器布局机制(Layout)
4.7.1 线性布局(LinearLayout)
4.7.2 流式布局(FlowLayout)
4.7.3 表格布局(TableLayout)
4.7.4 页面布局(PageLayout)
4.7.5 相对布局(RelativeLayout)
4.7.6 绝对布局(AbsoluteLayout)
4.8 脚本机制(Script)
4.9 视障辅助机制(MSAA)
4.10 插件机制(Plugin)
ExDirectUI 5.0 项目进度安排
由于我只是在工作之余利用业余时间进行项目的开发,且本人是个C++菜鸟┓( ´∀` )┏,所以效率不会很高,开发进度预计会安排得很长。另外,由于要先忙自身工作,所以进度随时可能会有短暂的停滞,还请大家见谅。
项目进度安排如下,完成情况将更新于后面的帖子。
前期需求分析、技术储备和架构预想:一个月 ——【已完成】
项目建立,引擎全局函数、基础常用类型的编写: 一周——【基本完成】
绘图模块的编写和测试:一个月——【进行中】
主题包、资源包模块的编写和测试:两周——【未开始】
窗口的创建、绑定和消息的基本处理:一周——【未开始】
控件基类的编写,控件渲染机制的编写:一个月——【未开始】
窗口和控件基类的对接和完善,DPI自适应的处理:视情况时间不定——【未开始】
基础控件集部分控件的开发:一周——【未开始】
DLL接口整理、文档和例程的编写、发布AlphaⅠ版:两周——【未开始】
根据内测使用反馈情况调整代码:视情况时间不定——【未开始】
布局/脚本/多语言文件的处理:一个月——【未开始】
缓动机制和动画机制的编写:一个月——【未开始】
DLL接口整理、文档和例程的编写、发布AlphaⅡ版:两周——【未开始】
根据内测使用反馈情况调整代码:视情况时间不定——【未开始】
容器布局机制的实现:一个月——【未开始】
拖放机制和视障辅助的支持:一个月——【未开始】
基础控件集、容器控件集的开发:一个月——【未开始】
DLL接口整理、头文件和调用模块的编写、文档和例程的编写、发布BetaⅠ版:两周——【未开始】
根据使用反馈情况调整代码:视情况时间不定——【未开始】
数据控件集的开发:一到两个月——【未开始】数据适配器机制的实现:一个月——【未开始】
其余控件的开发:视情况时间不定——【未开始】
DLL接口整理、头文件和调用模块的编写、文档和例程的编写、发布BetaⅡ版:两周——【未开始】
根据使用反馈情况调整代码:视情况时间不定——【未开始】
插件机制的安排和接口处理:视情况时间不定——【未开始】
系统整体调试、发布BetaⅢ版:两周——【未开始】
迭代多次,待引擎基本稳定后,发布正式版:视情况时间不定——【未开始】
根据5.0的使用和现实工作情况,适时开始 ExDirectUIBuilder 项目的开发工作。
其他想说的
最后我想说,诺诺我是从2013年 ExDirectUI 1.6 时代开始入的坑,从一开始的菜鸟小白,慢慢学习成长为今天一个能帮助泆寒开发UI引擎的“副教主”。我想告诉现在入坑的童鞋们,任何事总要有个学习、适应过程,不要想着一口气吃个诺诺胖子,学习要循序渐进。使用ExDirectUI是需要一定编程基础的,多看多理解提供的例程,同时要多动脑子举一反三,在向其他人提问前尽量先自己多想想多试试,另外百度、谷歌、MSDN相关知识也是个不错的选择。
最后的最后,希望大家能早日成为ExDirectUI圈里响当当的大牛大拿大神!
最后的最后的最后,宣传一波ExDirectUI群,希望有兴趣的童鞋可以加入,我们一起讨论一起成长:
ExDirectUI 开车讨论①群:433859(满了,暂时不加了,开放时会再通知)
ExDirectUI 聊骚讨论②群:155525070(对ExDirectUI感兴趣都可以加,加群看好问题)
ExDirectUI 后宫佳丽控件开发交流群:323701035(主要是对控件开发有兴趣的,不是都能批的哦)
ExDirectUI 引擎开发交流群:129705651(对UI引擎开发有兴趣的可以加,能批的就更少了)
ExDirectUI 商业用户交流群:(暂无)
对了,有几种人最好别进:纯伸手党、EQ低性格倔、广告党、红包党、机器人党、开车过分党。
最后的最后的最后的最后,感谢你能看到这,完了。
ExDirectUI 5.0 项目重构正式启动相关推荐
- 圣域书城的项目已正式启动!
圣域书城的项目已正式启动, 我们致力于建设一个图书分享的网站,上网者能够通过网站在线看书. 我们的博客是http://www.cnblogs.com/readingstuff/ 我们的组员有: 姜智成 ...
- Aeon项目今天正式启动
过了这么长的一段时间LiveStation的第一个版本的的开发工作终于天始启动,开发代号为"Aeon",以后每周都会来这里报告下Aeon的进度.目前估计项目会在明年2月份前完工. ...
- Vue3.0 项目打包,启动
1.打包 1.使用 vue ui打包(选择任务-选择build-选择运行) 2.使用命令打包(vite build),本项目使用vite进行打包 2.生成打包文件 1.项目中会出现一个dist文件 3 ...
- 魅族android n怎么更新,给力!魅族安卓7.0升级计划正式启动:史上最大规模
魅族在Flyme的UI层面升级速度那是没话说,但在安卓系统的升级上就要大大落后于友商了,即使是旗舰机依然止步于安卓5.1或安卓6.0.好在趁Flyme五周年,魅族计划将部分机型升级到安卓7.0,堪称魅 ...
- 章鱼网络第二条应用链 Myriad 主网正式启动
全长 1573 字,预计阅读 8 分钟 作者:MiX 微信交流:mixoct 2022年1月8日,Octopus Network 章鱼网络多链生态第二个应用链项目-- Myriad 正式启动主网.My ...
- 汉高任命荣杰博士为大中华区总裁;沃尔玛中国2021届校招正式启动 | 美通企业日报...
今日看点 汉高任命荣杰博士为汉高大中华区总裁.汉高宣布任命荣杰博士(Dr. Rajat Agarwal)为大中华区总裁,全面负责汉高在大中华区的业务运营,自2020年7月1日起生效.此外,荣杰博士还将 ...
- VUE 2.0 项目搭建流程
1.首先按照nodejs.官网:https://nodejs.org/zh-cn/download/ 2.nodejs安装完成后,安装vue-cli.npm i -g @vue/cli 检查 ...
- 章鱼加速器第二期 Web3.0 创业营报名启动 | Substrate 应用链项目全球招募中
全长1505字,预计阅读 7 分钟 撰文:MiX 微信交流:mixoct 章鱼加速器第二期 Web3.0 创业营,将于2022年2月28日正式启动,全程6周.在最终的「Octopus Appchain ...
- 金融IC卡项目正式启动
金融IC卡项目正式启动了,即将封闭3个月,认真将事情圆满完成. 由于这是技术性比较强的项目,做些日志作为工作备忘吧. 第一天,对前期需求的理解. PBOC2.0标准 根据我国银行卡芯片化计划要求,20 ...
- 百胜软件2016年双十一项目正式启动
7月29日下午,百胜软件2016年双十一项目正式启动.百胜软件公司高层领导.各分公司总经理及项目组成员参加了启动会. 百胜软件副总裁马龙飞首先致辞,马总表示,今年双十一一定是全渠道玩法,百胜软件在践行 ...
最新文章
- 蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前
- WPS 导致 EXCEL 文件下载问题
- php todo和其他备注,Vim中列出TODO与FIXME等备注的方法
- C语言的关键字 extern
- javaScript第六天(2)
- 一文聊“图”,从图数据库到知识图谱
- 公网访问阿里云数据库MongoDB——填坑笔记
- mysql limit (1-1)10_110,当您知道只有1个结果时,是否将'LIMIT 1'添加到MySQL查询中使它们更快?...
- C#条件编译,发布多平台和多种选择性的项目
- freemarker数据格式化问题(即数值超过三位后自动添加逗号问题)
- 4.Jenkins 权威指南 --- 自动化测试
- 华为:一个中国民族企业的“下半场”在哪里?
- C# 解析CSV文件
- Java实现标题相似度计算,文本内容相似度匹配,Java通过SimHash计算标题文本内容相似度
- 用C#去读取陀螺仪姿态角度传感器JY61的串口数据
- html长图转换成pdf,支持把各类文档转换成 HTML5(SVG)接口、长图片、PDF 。word转pdf、word转html5、pdf转网页html5、pdf转图片的接口...
- 国内外黑客大会资料下载
- SpringCloud OpenFeign 服务调用传递 token
- 【php毕业设计】基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码)——网络数据包分析工具
- 单片机开发---ESP32S3移植NES模拟器(二)