介紹 C#跨平臺UI框架 提供NETStandard2.0和net4的庫,通過Netcore可以跨平臺,支持Windows、Mac、Linux,Net4的可以支持XP。 各個平臺運行效果一致,不依賴系統控制項。 支持窗體,控制項任意透明,支持異形窗體,支持SVG圖標顯示。 支持動畫,數據綁定,Mvvm模 ...
介紹
C#跨平臺UI框架
提供NETStandard2.0和net4的庫,通過Netcore可以跨平臺,支持Windows、Mac、Linux,Net4的可以支持XP。
各個平臺運行效果一致,不依賴系統控制項。 支持窗體,控制項任意透明,支持異形窗體,支持SVG圖標顯示。
支持動畫,數據綁定,Mvvm模式,CSS等,簡化依賴屬性,數據綁定的寫法,提供數據上下文和命令上下文來綁定。
直接用CSS和C#代碼描述, 提供設計器生成C#代碼和開發者工具查看和調試元素。
和WPF一樣的理念,任何控制項都可以任意設計模板來實現各種效果 除了使用平臺相關API之外,基本可以實現一次編寫,到處運行。
全面支持國產化,支持國產Linux + 龍芯、飛騰、兆芯、海光等CPU平臺
軟體架構說明
CPF為主要框架,CPF.Skia為用skia做圖形適配,CPF.Windows、CPF.Linux、CPF.Mac、CPF.Android為各個平臺的適配器。
所有控制項採用自繪,可以保證各個平臺渲染一致性。可以開啟skia的硬體加速。Windows端還可以選擇GDI+作為圖形渲染
C#描述UI
public class Window1 : Window { protected override void InitializeComponent() { LoadStyleFile("res://測試/Stylesheet1.css"); Title = "標題"; Width = 500; Height = 400; Background = null; Children.Add(new WindowFrame(this, new Panel { Width = "100%", Height = "100%", Children = { new StackPanel{ Size = SizeField.Fill, Children = { new Label{ Text = "標簽", Bindings = { {nameof(Label.Text),nameof(MainModel.Test) }, //{ nameof(Label.Text), nameof(MainModel.Test), null, BindingMode.OneWay, (string a)=>a+"轉換器" } }, }, new Button{ Content="按鈕", Bindings = { {nameof(Label.Text),nameof(MainModel.Test) } }, } }, }, } })); } }
CSS描述樣式
需要註意的是這裡只是用到CSS的格式,並不是相容網頁的CSS
Button { BorderFill: #DCDFE6; IsAntiAlias: True; CornerRadius: 4,4,4,4; Background: #FFFFFF; } Button[IsMouseOver=true] { BorderFill: rgb(198,226,255); Background: rgb(236,245,255); Foreground: rgb(64,158,255); } Button[IsPressed=true] { BorderFill: rgb(58,142,230); }
使用說明
開源地址:https://gitee.com/csharpui/CPF
直接克隆/下載就可以編譯,直接啟動ConsoleApp1看運行效果
CPF使用文檔 http://cpf.cskin.net/Course/#/
擴展庫
https://gitee.com/csharpui/cpf.cef 使用CPF對cef的封裝,跨平臺瀏覽器控制項
https://gitee.com/csharpui/cpf.vlc 使用CPF對vlc的封裝,跨平臺視頻播放控制項
其他說明
之前一直在糾結要不要開源,一個人太難搞了,歡迎大家一起壯大開源社區
肯定有很多人會把CPF和Avalonia、Maui進行對比,自己根據喜好和需求選擇吧,CPF是沒有Xaml,不排除將來可能會增加Xaml的功能。CPF會儘量適配國內系統和環境。
效果截圖
簽名:<-CPF C# 跨平臺桌面UI框架,支持Windows,Mac,Linux,包括XP,國產麒麟Linux等等->