當前位置: 妍妍網 > 碼農

CPF C#跨平台UI框架開源了

2024-01-26碼農

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 classWindow1 : Window
{
protectedoverridevoidInitializeComponent()
{
Load styleFile("res://測試/ stylesheet1.css");
Title = "標題";
Width = 500;
Height = 400;
Background = null;
Children.Add(new WindowFrame(thisnew 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;
CornerRadius4,4,4,4;
Background#FFFFFF;
}
Button[IsMouseOver=true]
{
BorderFillrgb(198,226,255);
Backgroundrgb(236,245,255);
Foregroundrgb(64,158,255);
}
Button[IsPressed=true]
{
BorderFillrgb(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會盡量適配國內系統和環境。

效果截圖

轉自:DSkin

連結:cnblogs.com/dskin/p/17849896.html

- EOF -

技術群: 添加小編微信並備註進群

小編微信:mm1552923

公眾號:dotNet編程大全