ExDirectUI 5.0 項目重構正式啓動

轉自 暗の魔法使 博客: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低性格倔、廣告黨、紅包黨、機器人黨、開車過分黨。

 

 

最後的最後的最後的最後,感謝你能看到這,完了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章