翼度科技»论坛 编程开发 .net 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
介绍

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
  1. public class Window1 : Window
  2. {
  3.     protected override void InitializeComponent()
  4.     {
  5.         LoadStyleFile("res://测试/Stylesheet1.css");
  6.         Title = "标题";
  7.         Width = 500;
  8.         Height = 400;
  9.         Background = null;
  10.         Children.Add(new WindowFrame(this, new Panel
  11.         {
  12.             Width = "100%",
  13.             Height = "100%",
  14.             Children =
  15.             {
  16.                 new StackPanel{
  17.                     Size = SizeField.Fill,
  18.                     Children = {
  19.                         new Label{
  20.                             Text = "标签",
  21.                             Bindings = {
  22.                                 {nameof(Label.Text),nameof(MainModel.Test) },
  23.                                 //{ nameof(Label.Text), nameof(MainModel.Test), null, BindingMode.OneWay, (string a)=>a+"转换器" }
  24.                             },
  25.                         },
  26.                         new Button{
  27.                             Content="按钮",
  28.                             Bindings = {
  29.                                 {nameof(Label.Text),nameof(MainModel.Test) }
  30.                             },
  31.                         }
  32.                     },
  33.                 },
  34.             }
  35.         }));
  36.     }
  37. }
复制代码
  
CSS描述样式

需要注意的是这里只是用到CSS的格式,并不是兼容网页的CSS
  1. Button {
  2.     BorderFill: #DCDFE6;
  3.     IsAntiAlias: True;
  4.     CornerRadius: 4,4,4,4;
  5.     Background: #FFFFFF;
  6. }
  7.     Button[IsMouseOver=true] {
  8.         BorderFill: rgb(198,226,255);
  9.         Background: rgb(236,245,255);
  10.         Foreground: rgb(64,158,255);
  11.     }
  12.     Button[IsPressed=true] {
  13.         BorderFill: rgb(58,142,230);
  14.     }
复制代码
  
使用说明

开源地址: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会尽量适配国内系统和环境。
 
 效果截图

 




 

 

 

来源:https://www.cnblogs.com/dskin/archive/2023/11/24/17849896.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具