【Golang】Go语言Windows GUI库XCGUI,DirectUI设计思想,高度自定义界面,支持Direct2D硬件加速
Github地址
https://github.com/twgh/xcgui
介紹
- 本庫封裝自炫彩界面庫,功能豐富(1000多個API接口),簡單易用,輕量級,高度DIY自定義,支持一鍵換膚。
- 炫彩界面庫是由C/C++語言開發:軟件運行效率高,不需要第三方庫的支持,不依賴MFC,ATL,WINDOWS標準控件等。
- DirectUI設計思想:在窗口內沒有子窗口,界面元素都是邏輯上的區域(無HWND句柄,安全,靈活),所有UI元素都是自主開發(不受系統限制),更加靈活的實現各種程序界面,滿足不同用戶的需求。
- 擁有免費的UI設計器:快速開發工具,所見即所得,高度自定義系統(DIY),讓UI開發變的更加簡單。
- 支持Direct2D,硬件加速,能更大程度的發揮硬件特性,創建高性能,高質量的2D圖形。
- 有完善的中文官方文檔:中文官方文檔
獲取
go get github.com/twgh/xcgui可視化UI設計器
使用UI設計器可以快速設計界面,節省大量代碼。
設計器使用例子,只有這么多代碼:
動態鏈接庫下載
| 百度網盤 | 下載 |
| 藍奏云 | 下載 |
程序運行時需要把XCGUI.dll放到程序運行目錄。
在開發時最好是放到C:\Windows\System32目錄,這樣就不需要頻繁把dll放到不同程序的運行目錄了。
簡單窗口(純代碼)
package mainimport ("github.com/twgh/xcgui/app""github.com/twgh/xcgui/window""github.com/twgh/xcgui/xcc" )func main() {// 1.初始化UI庫a := app.New(true)// 2.創建窗口w := window.New(0, 0, 430, 300, "", 0, xcc.Window_Style_Simple|xcc.Window_Style_Btn_Close)// 設置窗口邊框大小w.SetBorderSize(0, 30, 0, 0)// 設置窗口透明類型w.SetTransparentType(xcc.Window_Transparent_Shadow)// 設置窗口陰影w.SetShadowInfo(8, 254, 10, false, 0)// 3.顯示窗口w.ShowWindow(xcc.SW_SHOW)// 4.運行程序a.Run()// 5.釋放UI庫a.Exit() }常量
xcc包里都是常量,像這樣使用:xcc.Window_Transparent_Shadow。
需要用到xcc包常量的參數注釋都是類似下圖這樣的,復制Window_Transparent_到xcc包里搜索即可看到相關常量注釋:
命令介紹
xc包里包含xcgui.dll里所有的API,有一千多個函數,可以直接使用,封裝好的類都在其他包里。
在某些情況下,把xc包里的原生函數與封裝好的類混合起來使用會更加方便。
炫彩所有的結構體也都在xc包里。
事件
炫彩的全部事件都已經定義好了,都是以Event開頭的, 以1結尾的事件是會傳進去元素的句柄。
事件回調函數盡量不要使用匿名函數,使用匿名函數意味著您每次都在創建1個新的回調,最終您將會遇到因創建過多回調導致程序崩潰的報錯(大概在2000個回調時會遇到),事件回調函數不使用匿名函數即可避免此問題。
一個事件可以注冊多個處理函數,執行順序為先執行最后注冊的函數,最后執行第一個注冊的函數,當你想攔截當前事件或不想向后傳遞,只需要將參數*pbHandled=true即可。
封裝進度
這些類都是基于xc包里的一千多個函數封裝的。
| 程序(炫彩全局API) | app | App | √ | 文檔 |
| 窗口 | window | Window | √ | 文檔 |
| 框架窗口 | window | FrameWindow | √ | 文檔 |
| 模態窗口 | window | ModalWindow | √ | 文檔 |
| 形狀對象 | widget | Shape | √ | 文檔 |
| 圓形形狀對象 | widget | ShapeEllipse | √ | 文檔 |
| 形狀對象GIF | widget | ShapeGif | √ | 文檔 |
| 組框形狀對象 | widget | ShapeGroupBox | √ | 文檔 |
| 直線形狀對象 | widget | ShapeLine | √ | 文檔 |
| 形狀對象圖片 | widget | ShapePicture | √ | 文檔 |
| 矩形形狀對象 | widget | ShapeRect | √ | 文檔 |
| 形狀對象文本 | widget | ShapeText | √ | 文檔 |
| 表格 | widget | Table | √ | 文檔 |
| 按鈕 | widget | Button | √ | 文檔 |
| 下拉組合框 | widget | ComboBox | √ | 文檔 |
| 編輯框(常規, 富文本, 聊天氣泡) | widget | Edit | √ | 文檔 |
| 代碼編輯框 | widget | Editor | √ | 文檔 |
| 基礎元素 | widget | Element | √ | 文檔 |
| 列表 | widget | List | √ | 文檔 |
| 列表框 | widget | ListBox | √ | 文檔 |
| 彈出菜單 | widget | Menu | √ | 文檔 |
| 進度條 | widget | ProgressBar | √ | 文檔 |
| 靜態文本連接按鈕 | widget | TextLink | √ | 文檔 |
| 布局元素 | widget | LayoutEle | √ | 文檔 |
| 布局框架 | widget | LayoutFrame | √ | 文檔 |
| 列表視圖 | widget | ListView | √ | 文檔 |
| 菜單條 | widget | MenuBar | √ | 文檔 |
| Pane元素 | widget | Pane | √ | 文檔 |
| 滾動條 | widget | ScrollBar | √ | 文檔 |
| 滾動視圖 | widget | ScrollView | √ | 文檔 |
| 滑動條元素 | widget | SliderBar | √ | 文檔 |
| 標簽欄元素 | widget | TabBar | √ | 文檔 |
| 工具條 | widget | ToolBar | √ | 文檔 |
| 列表樹元素 | widget | Tree | √ | 文檔 |
| 日期時間 | widget | DateTime | √ | 文檔 |
| 月歷卡片 | widget | MonthCal | √ | 文檔 |
| 數據適配器-列表視元素 | adapter | AdapterListView | √ | 文檔 |
| 數據適配器-單列Map-列表頭(listHeader) | adapter | AdapterMap | √ | 文檔 |
| 數據適配器-XList-XListBox | adapter | AdapterTable | √ | 文檔 |
| 數據適配器-樹元素 | adapter | AdapterTree | √ | 文檔 |
| 背景管理器 | bkmanager | BkManager | √ | 文檔 |
| 背景對象 | bkobj | BkObj | √ | 文檔 |
| 字體 | font | Font | √ | 文檔 |
| 圖片操作 | imagex | Image | √ | 文檔 |
| SVG矢量圖形 | svg | Svg | √ | 文檔 |
| 列表項模板 | tmpl | ListItemTemplate | √ | 文檔 |
| 節點 | tmpl | Node | √ | 文檔 |
| 圖形繪制 | drawx | Draw | √ | 文檔 |
| 動畫序列 | ani | Anima | √ | 文檔 |
| 動畫組 | ani | AnimaGroup | √ | 文檔 |
| 動畫項 | ani | AnimaItem | √ | 文檔 |
| 動畫旋轉項 | ani | AnimaRotate | √ | 文檔 |
| 動畫縮放項 | ani | AnimaScale | √ | 文檔 |
| 含有XCGUI所有API和結構體 | xc | √ | 文檔 | |
| XCGUI常量 | xcc | √ | 文檔 | |
| 緩動 | ease | √ | 文檔 | |
| 資源操作 | res | √ | 文檔 | |
| Windows系統api | wapi | 持續更新 | 文檔 | |
| 調用wapi封裝了對窗口的操作 | wnd | 持續更新 | 文檔 |
總結
以上是生活随笔為你收集整理的【Golang】Go语言Windows GUI库XCGUI,DirectUI设计思想,高度自定义界面,支持Direct2D硬件加速的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复盘首届盘古石杯全国电子数据取证大赛晋级
- 下一篇: Android 设置边距总结