转自 暗の魔法使 博客:https://blog.csdn.net/jsntzsy/article/details/88554543 作者:ExDirectUI 诺诺

在前期做了一两个月所需技术储备和代码架构等准备工作后,ExDirectUI 5.0 项目(以后统称5.0)的重构于今日正式启动,今后我会在此博客持续更新开发进度和心得,没有特殊原因的话更新频率约为每周一到两次,欢迎大家一起讨论和督促。

今天我先将5.0前期收集到的需求及所设想的架构向大家阐述,欢迎大家提出建议意见:

ExDirectUI 5.0 需求

  1. 内置控件的无窗口句柄化,采用逻辑控件模式而非直接派生于Windows控件,避免外部程序直接采用WinAPI操作;
  2. 绘图采用Direct2D/GDIPlus双引擎进行绘制,所提供的绘图接口做到用户透明,引擎绘制出的效果尽量保持一致;
  3. 控件系统支持动画机制,内置支持透明度、位移等动画变换,支持动画进度缓动机制,提供自定义动画的接口;
  4. DLL接口采用句柄+消息+函数操作,并根据需求再在此基础上封装面向对象的类库,函数接口类似WinAPI相关函数;
  5. 支持通过XML/JavaScript创建、操作窗口及控件,并提供接口于主程序交互;
  6. 支持主题包、资源包、风格文件,主题包支持单独设置(可以设置到控件级),资源包支持加载入口脚本;
  7. 支持提取窗口、控件的当前位图(支持透明通道);
  8. 支持 MSAA、I18N、Drag&Drop、DPI自适应 等功能;
  9. 支持控件容器的布局机制,初步设想提供线性布局、流式布局、表格布局、页面布局、相对布局、绝对布局,并提供接口支持自定义布局。
  10. 除了Windows原生支持的常用图像格式外,另外支持APNG格式实现支持透明通道的动画图像格式。
  11. 列表、树等数据类控件支持数据适配器绑定,支持从XML、数据库、内存等方面自动处理表项数据。
  12. 提供窗口(Window)、对话框(Dialog)、消息框(MessageBox)、菜单(Menu)、弹出式窗口(PopupWindow)。
  13. 支持对控件和图像进行圆角化、蒙版、模糊、色调调整等操作。
  14. 支持无边框、不透明、分层、高性能(D2D/Win8以上支持)等窗口模式。
  15. 控件包括消息和事件两部分,其中事件由消息产生,支持控件的子类化和超类化。
  16. 控件的事件依次通过自身、JS、单独绑定的回调函数、直接父控件、间接父控件(允许事件冒泡)、所在窗口的分发层级,所有层级均可拦截。
  17. 控件支持跨窗口置父。
  18. 提供所见即所得的 ExDirectBuilder 界面工程编辑器(待引擎功能基本完善后开始实施该项目),主要功能包括:拖拽式的窗口布局开发、界面开发支持设置容器布局、支持控件挂接JS事件和编辑脚本、支持绑定数据适配器、支持界面预览、支持主题包/资源包/风格文件的编辑、支持工程整体打包为资源包、支持生成创建代码和事件接口等,次要功能包括:现有界面自动抽取、宫格贴图矩形生成、颜色拾色和配色推荐、界面SPY调试工具等。
  19. 完备的开发帮助文档和例子源码,并随引擎版本更新。

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 项目重构正式启动相关推荐

  1. 圣域书城的项目已正式启动!

    圣域书城的项目已正式启动, 我们致力于建设一个图书分享的网站,上网者能够通过网站在线看书. 我们的博客是http://www.cnblogs.com/readingstuff/ 我们的组员有: 姜智成 ...

  2. Aeon项目今天正式启动

    过了这么长的一段时间LiveStation的第一个版本的的开发工作终于天始启动,开发代号为"Aeon",以后每周都会来这里报告下Aeon的进度.目前估计项目会在明年2月份前完工. ...

  3. Vue3.0 项目打包,启动

    1.打包 1.使用 vue ui打包(选择任务-选择build-选择运行) 2.使用命令打包(vite build),本项目使用vite进行打包 2.生成打包文件 1.项目中会出现一个dist文件 3 ...

  4. 魅族android n怎么更新,给力!魅族安卓7.0升级计划正式启动:史上最大规模

    魅族在Flyme的UI层面升级速度那是没话说,但在安卓系统的升级上就要大大落后于友商了,即使是旗舰机依然止步于安卓5.1或安卓6.0.好在趁Flyme五周年,魅族计划将部分机型升级到安卓7.0,堪称魅 ...

  5. 章鱼网络第二条应用链 Myriad 主网正式启动

    全长 1573 字,预计阅读 8 分钟 作者:MiX 微信交流:mixoct 2022年1月8日,Octopus Network 章鱼网络多链生态第二个应用链项目-- Myriad 正式启动主网.My ...

  6. 汉高任命荣杰博士为大中华区总裁;沃尔玛中国2021届校招正式启动 | 美通企业日报...

    今日看点 汉高任命荣杰博士为汉高大中华区总裁.汉高宣布任命荣杰博士(Dr. Rajat Agarwal)为大中华区总裁,全面负责汉高在大中华区的业务运营,自2020年7月1日起生效.此外,荣杰博士还将 ...

  7. VUE 2.0 项目搭建流程

    1.首先按照nodejs.官网:https://nodejs.org/zh-cn/download/ 2.nodejs安装完成后,安装vue-cli.npm i -g @vue/cli      检查 ...

  8. 章鱼加速器第二期 Web3.0 创业营报名启动 | Substrate 应用链项目全球招募中

    全长1505字,预计阅读 7 分钟 撰文:MiX 微信交流:mixoct 章鱼加速器第二期 Web3.0 创业营,将于2022年2月28日正式启动,全程6周.在最终的「Octopus Appchain ...

  9. 金融IC卡项目正式启动

    金融IC卡项目正式启动了,即将封闭3个月,认真将事情圆满完成. 由于这是技术性比较强的项目,做些日志作为工作备忘吧. 第一天,对前期需求的理解. PBOC2.0标准 根据我国银行卡芯片化计划要求,20 ...

  10. 百胜软件2016年双十一项目正式启动

    7月29日下午,百胜软件2016年双十一项目正式启动.百胜软件公司高层领导.各分公司总经理及项目组成员参加了启动会. 百胜软件副总裁马龙飞首先致辞,马总表示,今年双十一一定是全渠道玩法,百胜软件在践行 ...

最新文章

  1. 蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前
  2. WPS 导致 EXCEL 文件下载问题
  3. php todo和其他备注,Vim中列出TODO与FIXME等备注的方法
  4. C语言的关键字 extern
  5. javaScript第六天(2)
  6. 一文聊“图”,从图数据库到知识图谱
  7. 公网访问阿里云数据库MongoDB——填坑笔记
  8. mysql limit (1-1)10_110,当您知道只有1个结果时,是否将'LIMIT 1'添加到MySQL查询中使它们更快?...
  9. C#条件编译,发布多平台和多种选择性的项目
  10. freemarker数据格式化问题(即数值超过三位后自动添加逗号问题)
  11. 4.Jenkins 权威指南 --- 自动化测试
  12. 华为:一个中国民族企业的“下半场”在哪里?
  13. C# 解析CSV文件
  14. Java实现标题相似度计算,文本内容相似度匹配,Java通过SimHash计算标题文本内容相似度
  15. 用C#去读取陀螺仪姿态角度传感器JY61的串口数据
  16. html长图转换成pdf,支持把各类文档转换成 HTML5(SVG)接口、长图片、PDF 。word转pdf、word转html5、pdf转网页html5、pdf转图片的接口...
  17. 国内外黑客大会资料下载
  18. SpringCloud OpenFeign 服务调用传递 token
  19. 【php毕业设计】基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码)——网络数据包分析工具
  20. 单片机开发---ESP32S3移植NES模拟器(二)

热门文章

  1. R、Rstudio、Rtools的下载与安装
  2. 单声道数据转双声道_单声道转双声道
  3. VMware Fusion 常用内容
  4. 产品经理如何写好一份简历
  5. 历史上有哪些最凶计算机病毒?
  6. ITween操作API
  7. texLive使用一条龙
  8. Java最新手机号正则验证
  9. JAVA的0x1b分隔符_hive 特殊分隔符 0X1B
  10. 苹果 iPhone 13 内置原生壁纸下载