.Net/.Net Core 的界面框架 NanUI 發佈新版本啦!
發佈前感悟
NanUI 自從上一次更新 NanUI 0.7 已經過去大半年,B站和頭條的教學視頻也只製作到了第二集。
有朋友悄悄問我是不是發生什麼事故我刪庫跑路了所以那麼長時間不更新項目不發佈教程,當然,這只是玩笑而已。
實際情況是 NanUI 0.7 基於 ChormiumFX 項目進行開發,剛剛發佈 0.7 之後我就發現了框架自生存在有重大 BUG 而且是我沒有能力處理的那種。
本想聯繫作者深入探討下這個 BUG,誰知道 ChromiumFX 的項目似乎突然中止了,截至目前位置項目首頁任然是走失狀態。
因此我不得不考慮放棄 ChromiumFX 換一種內核,在甄選了 CefSharp 和 CefGlue 之後,還是覺得使用更接近 CEF 原生的 CefGlue 作為底層重置 NanUI 項目,並提升版本號到 0.8,這也是第一次在大項目版本幾乎沒有小版本更新的情況下直接升級大版本。
新版本的 NanUI 開發了大半年,踩了 CefGlue 各種坑,期間我太太還突發了非常不幸於的疾病,後來我也非常幸體驗了人生第一次住院經歷。還好,老天留下了我倆的狗命,估計將來還另做他用吧😂,所以也希望各位及家人身體健康,經歷了這次浩劫,突然覺得人只要能好好的,健健康康活着就行,其他的都不重要。
廢話就這麼多吧,下面進入正題。
NanUI 簡介
NanUI 界面組件是一個開放源代碼的 .NET / .NET Core 窗體應用程序(WinForms)界面組件。她適用於希望使用 HTML5/CSS3 等前端技術來構建 Windows 窗體應用程序用戶界面的 .NET/.NET Core 開發人員。
NanUI 的渲染引擎 WinFormium 基於谷歌可嵌入的瀏覽器框架 Chromium Embedded Framework,因此用戶可以使用各種前端技術 HTML5/CSS3/JavaScript 和框架 React/Vue/Angular/Blazor 設計和開發.NET 桌面應用程序的用戶界面。
同時,WinFormium 特有的 JavaScript Bridge 可以方便簡潔地實現瀏覽器端與 .NET 之間的通信和數據交換。
使用 NanUI 界面框架將為傳統的 WinForm 應用程序的用戶界面設計和開發工作帶來無限種可能!
如果您想了解更多關於 NanUI 項目的信息,請移步NanUI 項目主頁。
0.8 新增內容
內核替換
內核從 ChromiumFX 替換為 CefGlue,Chromim 的版本提升到了80.0.3987.163
。
承載窗體
重寫承載窗體底層刪除了沒必要的 API 僅保留和框架有關的功能,並且拓展了無邊框窗體的能力,新增了兩種陰影效果以及一種邊框效果。
窗體類型
原生樣式
系統原生窗體樣式與傳統的 WinForm 應用程序界面一致,擁有系統樣式的標題欄、邊框和系統命令區域,類似在傳統的 Form 控件上拖入 WebBrowser 控件並設置 Dock 屬性為 Fill 時的樣子一致。
無邊框窗體
在無邊框窗體樣式中系統原生的標題欄和邊框被隱藏,可以使用整個窗體區域來繪製您的應用程序界面。
Kiosk 模式
Kiosk 樣式的窗體普遍用於需要全屏展示窗體內容的場景,例如:工控上位機界面、查詢機界面、數據大屏幕等。
異形窗口
使用 Layered 樣式允許創建異形、半透明窗體。類似各種大師、各種管家提供的加速球那種效果。
亞克力特效窗體
亞克力特效是 Windows 10 創意者更新版之後提供的新功能,它允許窗體的透明或半透明區域與桌面元素進行模糊混合,實現特殊的磨砂亞克力效果。與 Layered 樣式相同,根據網頁中透明或者半透明區域的設置,將實現特定效果的磨砂玻璃效果。
窗體特效
陰影效果
關閉
泛光
陰影
投影
邊框效果
無邊框
普通邊框
圓角邊框
以上示例均已提交至 GitHub 代碼倉庫,請異步//github.com/XuanchenLin/NanUI-0.8-Examples獲取各個示例的源碼。
離屏渲染支持
引入了 Direct2D 技術,CEF 的離屏渲染得以實現,由此添加了兩種新的承載窗體樣式:異形樣式窗體
和亞克力特效窗體
。
資源處理器
新增了一種資源處理器,能夠從 ZIP 文件里加載資源。
其他
- 對一些 API 的寫法進行了優化。
- 優化了自定義資源控制器的抽象類,使用更簡單了。
- 優化了 JavaScript 擴展的抽象類,同上,麻麻在也不用擔心我不會註冊 .NET 對象到 JavaScript 的代碼了。
使用 NanUI 0.8 創建一個應用程序
引用 NanUI 包
使用 Visual Studio 的NuGet包管理器
或者程序包管理器控制台
來獲取 NanUI 的程序集,根據項目的類型(.NET Framework 或者 .NET Core)將自動安裝合適的程序集。
PM> Install-Package NetDimension.NanUI
安裝 NanUI 運行環境包。這個包主要包含了與CEF
框架有關的文件,根據您項目架構(AnyCPU/x86/x64)的具體情況,此 NuGet 包將在編譯時拷貝與架構對應的運行時文件到項目的輸出目錄中。
PM> Install-Package NetDimension.NanUI.Runtime
如果您在國內 NuGet 訪問較慢無法下載NetDimension.NanUI.Runtime包時,請您加QQ群521854872在群文件中下載NuGet 離線包 。
編碼部分
在主窗體加載前初始化 NanUI 運行環境。
using NetDimension.NanUI;
class Program
{
static void Main()
{
// ...
WinFormium.CreateRuntimeBuilder(env => {
env.CustomCefSettings(settings =>
{
// 在此處設置 CEF 的相關參數
});
env.CustomCefCommandLineArguments(commandLine =>
{
// 在此處指定 CEF 命令行參數
});
}, app =>
{
// 指定啟動窗體
app.UseMainWindow(context => new MainWindow());
})
.Build()
.Run();
}
}
編寫窗體代碼
using NetDimension.NanUI;
using NetDimension.NanUI.HostWindow;
class MainWindow : Formium
{
// 設置窗體樣式類型
public override HostWindowType WindowType => HostWindowType.System;
// 指定啟動 Url
public override string StartUrl => "//www.formium.net";
public MainWindow()
{
// 在此處設置窗口樣式
Size = new System.Drawing.Size(1024, 768);
}
protected override void OnReady()
{
// 在此處進行瀏覽器相關操作
//ShowDevTools();
//ExecuteJavaScript("alert('Hello NanUI')");
}
}
沒有複雜的步驟!只需簡單操作 NanUI 項目就可以順利運行。
項目相關
倉庫
以上涵蓋了本次更新的大概內容,如果想了解更多信息,請移步 NanUI 項目倉庫首頁。
目前 NanUI 0.8 版源碼暫時沒有放出,等黑測一段時間收集反饋修改後會提交至上面兩個倉庫。
文檔
NanUI 提供了大部分功能的文檔,使用這些文檔將有助於輕鬆快速的開始使用 NanUI 進行開發。
- NanUI 0.8 文檔 @ GitHub
- NanUI 0.8 文檔 @ Gitee
目前 NanUI 文檔正在逐步完善,如果有朋友願意幫助翻譯不同語言的文檔,請與我取得聯繫或者直接提交其他語言文檔的 Pull Request 即可,感激不敬!
開源協議
NanUI 項目基於 LGPL-3.0 開源協議開放項目源代碼。本項目版權由項目發起人、開發者林選臣所有。
依照 LGPL-3.0 協議規定:
- 您可以在任何商業軟件中引用 NanUI 的二進制庫而無需支付任何與版權相關的費用;
- 如果您的項目使用並修改了 NanUI 的源代碼,那麼您的項目也需要使用 LGPL 協議進行開源,並且在您的衍生項目中保留 NanUI 的版權信息:
Powered by NanUI
。 - 如果您需要在非開源的應用程序中使用 NanUI 的源代碼,為了保障您的合法權益,請考慮向項目作者購買商業授權。
關於 LGPL-3.0 協議的具體內容請參考此協議詳細副本。此外,NanUI 項目基於諸多開源項目進行構建,相關的項目請查閱第三方授權協議。
打賞和贊助
NanUI 項目基於 LGPL-3.0 協議的開源項目並且它是完全免費的。儘管如此,如果沒有適當的資金支持,項目維護和新功能的開發是無法持續下去的。所以如果你喜歡這個項目並認可我的工作,你可以支付我一杯咖啡的錢請我喝一杯咖啡,或者你也可以成為長期的項目資助人以幫助 NanUI 變得更好。
使用微信或者支付寶掃描下方二維碼來進行資金方面的捐助。