日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【Golang】Go语言Windows GUI库XCGUI,DirectUI设计思想,高度自定义界面,支持Direct2D硬件加速

發布時間:2024/3/13 windows 144 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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設計器可以快速設計界面,節省大量代碼。

設計器使用例子,只有這么多代碼:

package mainimport (_ "embed""github.com/twgh/xcgui/app""github.com/twgh/xcgui/window""github.com/twgh/xcgui/xcc" )//go:embed res/qqmusic.zip var qqmusic []bytefunc main() {a := app.New(true)// 從內存zip中加載資源文件a.LoadResourceZipMem(qqmusic, "resource.res", "")// 從內存zip中加載布局文件, 創建窗口對象w := window.NewByLayoutZipMem(qqmusic, "main.xml", "", 0, 0)// 調整布局w.AdjustLayout()// 顯示窗口w.ShowWindow(xcc.SW_SHOW)a.Run()a.Exit() }

動態鏈接庫下載

網盤下載地址
百度網盤下載
藍奏云下載

程序運行時需要把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)appApp文檔
窗口windowWindow文檔
框架窗口windowFrameWindow文檔
模態窗口windowModalWindow文檔
形狀對象widgetShape文檔
圓形形狀對象widgetShapeEllipse文檔
形狀對象GIFwidgetShapeGif文檔
組框形狀對象widgetShapeGroupBox文檔
直線形狀對象widgetShapeLine文檔
形狀對象圖片widgetShapePicture文檔
矩形形狀對象widgetShapeRect文檔
形狀對象文本widgetShapeText文檔
表格widgetTable文檔
按鈕widgetButton文檔
下拉組合框widgetComboBox文檔
編輯框(常規, 富文本, 聊天氣泡)widgetEdit文檔
代碼編輯框widgetEditor文檔
基礎元素widgetElement文檔
列表widgetList文檔
列表框widgetListBox文檔
彈出菜單widgetMenu文檔
進度條widgetProgressBar文檔
靜態文本連接按鈕widgetTextLink文檔
布局元素widgetLayoutEle文檔
布局框架widgetLayoutFrame文檔
列表視圖widgetListView文檔
菜單條widgetMenuBar文檔
Pane元素widgetPane文檔
滾動條widgetScrollBar文檔
滾動視圖widgetScrollView文檔
滑動條元素widgetSliderBar文檔
標簽欄元素widgetTabBar文檔
工具條widgetToolBar文檔
列表樹元素widgetTree文檔
日期時間widgetDateTime文檔
月歷卡片widgetMonthCal文檔
數據適配器-列表視元素adapterAdapterListView文檔
數據適配器-單列Map-列表頭(listHeader)adapterAdapterMap文檔
數據適配器-XList-XListBoxadapterAdapterTable文檔
數據適配器-樹元素adapterAdapterTree文檔
背景管理器bkmanagerBkManager文檔
背景對象bkobjBkObj文檔
字體fontFont文檔
圖片操作imagexImage文檔
SVG矢量圖形svgSvg文檔
列表項模板tmplListItemTemplate文檔
節點tmplNode文檔
圖形繪制drawxDraw文檔
動畫序列aniAnima文檔
動畫組aniAnimaGroup文檔
動畫項aniAnimaItem文檔
動畫旋轉項aniAnimaRotate文檔
動畫縮放項aniAnimaScale文檔
含有XCGUI所有API和結構體xc文檔
XCGUI常量xcc文檔
緩動ease文檔
資源操作res文檔
Windows系統apiwapi持續更新文檔
調用wapi封裝了對窗口的操作wnd持續更新文檔

總結

以上是生活随笔為你收集整理的【Golang】Go语言Windows GUI库XCGUI,DirectUI设计思想,高度自定义界面,支持Direct2D硬件加速的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。