【开源项目】WPF 扩展组件 -- Com.Gitusme.Net.Extensiones.Wpf

一、项目简介

Com.Gitusme.Net.Extensiones.Wpf 是一款 Wpf 扩展组件。基于.Net Core 3.1 开发,当前最新 1.0.1 版本。包含 核心扩展库(Com.Gitusme.Net.Extensiones.Core)、视频渲染(Com.Gitusme.Media.Video)、串口通信(Com.Gitusme.IO.Ports.SerialPort) 等重要功能。集成快捷,使用方便。

二、组件能力

2.1 核心扩展库

Com.Gitusme.Net.Extensiones.Core 是一个 C#.Net 扩展库。当前最新 1.0.7 版本,使用方便快捷,能够减少代码量,提高编程效率。基于 .Net Standard 2.0 开发,支持 windows、linux、IOS 等多平台。详细请参阅:

【开源项目】C#.NET 扩展库 -- Com.Gitusme.Net.Extensiones.Core-CSDN博客

2.2 视频渲染

Com.Gitusme.Media.Video 是一款视频渲染组件。基于.Net Core 3.1 开发,支持平铺模式和画廊模式,支持多画面异步渲染,能有效发挥硬件性能,集成快捷使用方便。免费版仅支持1个画面渲染,多画面渲染诉求,请与作者联系以供技术支持。详细请参阅:

【开源项目】WPF 扩展 -- 多画面视频渲染组件-CSDN博客

2.3 串口通信

Com.Gitusme.IO.Ports.SerialPort 是一款 Windows 串口通信组件,基于.Net Core 3.1 开发,支持 Console、WinFrom、Wpf 等 Windows 应用。兼容 C#、Viural Basic 等.NET语言,集成方便快捷,能有效提高编程效率。详细请参阅:

【开源项目】Windows串口通信组件 -- Com.Gitusme.IO.Ports.SerialPort-CSDN博客

三、项目集成

方式1:管理NuGet程序包

选择项目,鼠标右键菜单选择 ”管理NuGet程序包“,搜索栏输入 ”Com.Gitusme.Net.Extensiones.Wpf“,点击 ”安装“ 或 ”更新“ 按钮,安装最新版本。

方式2:NuGet官网下载,本地添加依赖

https://www.nuget.org/packages/Com.Gitusme.Net.Extensiones.Wpf/

四、应用示例

4.1 Objet 类型转换

            // Example 1: 判断对象是否为null
            MyObject obj = null;
            if (obj.IsNull())
            {
                System.Console.WriteLine("Example 1 输出结果:" + "null");
            }

            // Example 2: 对象为null的时候,返回传入的默认值
            var def = obj.OrDefault(new MyObject());
            System.Console.WriteLine("Example 2 输出结果:" + def);

            // Example 3: 如果对象不为null,则执行传入的Action行为
            def.IfPresent((it) =>
            {
                System.Console.WriteLine("Example 3 输出结果:" + it.Name);
            });

            // Example 4: 将Xml对象转换为Xml文本
            var xmlObj = new MyXmlObject();
            string xml = xmlObj.ToXml();
            System.Console.WriteLine("Example 4 输出结果:" + xml);

            // Example 5: 将Json对象转换为Json文本
            var jsonObj = new MyJsonObject();
            string json = jsonObj.ToJson();
            System.Console.WriteLine("Example 5 输出结果:" + json);

4.2 String 类型转换

            // Example 1: 判断string是否为null
            string str = null;
            if (str.IsNullOrEmpty())
            {
                System.Console.WriteLine("Example 1 输出结果:" + "null");
            }

            // Example 2: 判断string是否匹配正则
            string hello = "Hello, gitusme";
            var isMatch = hello.IsMatch(@"Hello, \w+");
            System.Console.WriteLine("Example 2 输出结果:" + isMatch);

            // Example 3: 将string转换为Json实体对象
            string json = "{\"Id\":0,\"Name\":\"Json Object\"}";
            var jsonObj = json.ToJsonObject<MyJsonObject>();
            System.Console.WriteLine("Example 3 输出结果:" + jsonObj.Name);

            // Example 4: 将string转换为Xml实体对象
            string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" id=\"0\">" +
                "<name>Xml Object</name>" +
                "</root>";
            var xmlObj = xml.ToXmlObject<MyXmlObject>();
            System.Console.WriteLine("Example 4 输出结果:" + xmlObj.Name);

            // Example 5: 将string转换为DateTime
            string date = "2023/10/22 21:32:00";
            var dateTime = date.ToDateTime();
            System.Console.WriteLine("Example 5 输出结果:" + dateTime.ToString());

            // Example 6: 将string转换为字符数组
            string gitusme = "gitusme";
            var array = gitusme.ToCharArray();
            System.Console.WriteLine("Example 6 输出结果:" + array);

            // Example 7: 将string转换为int32
            string intStr = "100";
            var intValue = intStr.ToInt32() + 10;
            System.Console.WriteLine("Example 7 输出结果:" + intValue);

            // Example 8: 将string转换为decimal
            string decimalStr = "3.141592653589793238462643383279502884197";
            var decimalValue = decimalStr.ToDecimal();
            System.Console.WriteLine("Example 8 输出结果:" + decimalValue);

            // Example 9: 将string转换为uri
            string uriStr = "https://github.com/gitusme/Com.Gitusme.Net.Extensiones";
            var uriValue = uriStr.ToUri();
            System.Console.WriteLine("Example 9 输出结果:" + uriValue.Host);

            // Example 10: 将string转换为color
            string colorStr = "#aabbcc";
            var colorValue = colorStr.ToColor();
            System.Console.WriteLine("Example 10 输出结果:" + colorValue);

4.3 打印日志文件

    internal class LoggerDemo : IExtensionesDemo
    {
        public override void Execute()
        {
            base.Execute();

            var server = new MyServer();
            server.Start("arg1", "arg2");
            server.Stop();
        }
    }

    class MyServer
    {
        public void Start(string arg1, string arg2)
        {
            this.Logi("MyServer", "Start:args={0},{1}", arg1, arg2);
        }

        public void Stop()
        {
            this.Logi("Stop.....");
        }
    }

4.4 基于命令模式的 Socket 套接字支持

            Thread serverThread = new Thread(() =>
            {
                CommandFactory factory = new DefaultCommandFactory();
                factory.AddUserCommand(new Server.ACK());

                ISocketServerHandler server = SocketBuilder.Builder()
                    .CommandFactory(factory)
                    .AddListener(new ServerSocketListener())
                    .CreateServer("127.0.0.1", 8080, 5)
                    .StartListening();

            });
            serverThread.Start();

            Thread clientThread = new Thread((clientId) =>
            {
                for(int i = 1; i <= 5; i++)
                {
                    System.Console.WriteLine("==== times=" + i.ToString("D5"));

                    ISocketHandler client = SocketBuilder.Builder()
                        .AddListener(new ClientSocketListener())
                        .CreateClient("127.0.0.1", 8080)
                        .Open();

                    string tag = $"{clientId}";

                    CommandExecutor executor = new CommandExecutor(client);

                    ICommandResult ack = executor.Execute(new Client.ACK());
                    string ackResult = SocketSettings.Default.Encoding.GetString(ack.Get());

                    Console.WriteLine($"[{tag}] ACK Result: {ackResult}");

                    ICommandResult eom = executor.Execute(new Client.EOM());
                    string eomResult = SocketSettings.Default.Encoding.GetString(eom.Get());

                    Console.WriteLine($"[{tag}] EOM Result: {eomResult}");

                    client.Close();

                    Thread.Sleep(200);
                    System.Console.WriteLine();
                }

                System.Console.WriteLine("Exit = 0");
            });
            clientThread.Start($"CLIENT");

4.5 启动动画

   protected override void OnStartup(StartupEventArgs e)
   {
       // 前提条件:需要删除XAML中的 StartupUri = "MainWindow.xaml"
       this.StartSplashScreen(
           $@"Resources\Images\SplashScreen.png",
          () => {
               // 在这里处理耗时任务或加载后台数据
               Thread.Sleep(3000);
          },
          () => {
               // 加载完成,后进入应用主界面
               MainWindow mainWindow = new MainWindow();
               App.Current.MainWindow = mainWindow;
               mainWindow.Show();
          },
          (ex) => {
               // 加载出错,向用户反馈或记录后台日志
               MessageBox.Show(ex.Message);
          });
   }

4.6 多画面视频渲染

平铺模式

b95ccb549f0142ab94dbbe8e8dc4f1ca.png

画廊模式

eed7094e131d4dde91258758f53037c2.png

4.7 串口通信

            SerialPort port1 = new SerialPort();
            port1.Settings = new SerialPortSettings
            {
                BaudRate = 115200,
                DataBits = 8,
                Parity = Parity.None,
                StopBits = 1,
                Synchronizable = false
            };
            port1.Open("COM1");

            SerialPort port2 = new SerialPort();
            port2.Settings = new SerialPortSettings
            {
                BaudRate = 115200,
                DataBits = 8,
                Parity = Parity.None,
                StopBits = 1,
                Synchronizable = false
            };
            port2.Open("COM2");

            string send = "Hello, gitusme!";
            byte[] data = System.Text.Encoding.UTF8.GetBytes(send);
            port1.Write(data);

            byte[] rec = new byte[data.Length + 10000];
            int read = port2.Read(rec);
            string receive = System.Text.Encoding.UTF8.GetString(rec, 0, read);

            port1.Close();
            port2.Close();

五、项目地址

https://github.com/gitusme/Com.Gitusme.Net.Extensiones

  • 44
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: "WPF-强大的图表.zip"是一个WPFA强大的图表库,可以用于创建各种类型的图表和数据可视化。这个库具有很多有用的功能和特性,使它成为开发人员首选的工具之一。 首先,它提供了丰富的图表类型,包括线条图、面积图、柱形图、饼图等等。无论是展示数据趋势、比较数据之间的关系,还是显示数据的分布,都可以使用该库来轻松创建出美观且具有交互性的图表。 其次,它支持数据的实时更新和动画效果。开发人员可以通过简单的代码,实现数据的实时更新和动画效果,使图表更加生动和动态。 此外,该库还提供了丰富的自定义选项,使开发人员能够根据自己的需求定制图表的外观和行为。可以调整图表的颜色、字体、背景等,使其与应用程序的风格一致。同时,还可以通过添加标签、工具提示等增加交互性和信息展示的功能。 最后,该库还具有良好的性能和稳定性。它采用了高效的绘图技术和数据处理算法,能够处理大量数据和复杂的图表。同时,它也经过了严格的测试和验证,保证在各种环境下都能稳定运行。 总之,"WPF-强大的图表.zip"是一个强大且易于使用的图表库,可以帮助开发人员轻松创建出各种类型的图表和数据可视化。无论是个人开发者还是企业应用开发者,都可以通过使用该库,提升应用程序的用户体验和数据展示效果。 ### 回答2: wpf-强大的图表.zip 是一个 WPF(Windows Presentation Foundation) 的图表库,提供了强大的图表功能。WPF 是一种用于创建 Windows 桌面应用程序的技术,它提供了丰富的用户界面元素和视觉效果,能够创建出漂亮、灵活和交互性强的应用程序。 这个图表库的强大之处在于它提供了多种类型的图表,包括饼图、柱状图、折线图、散点图等,可以满足不同需求的数据可视化要求。通过使用这个库,开发人员可以轻松创建出直观、美观的图表,使得数据更加易于理解和分析。 此外,这个库还提供了丰富的图表定制和交互功能。开发人员可以自定义图表的样式、颜色和标签,以适应不同的设计需求。还可以添加交互功能,比如通过鼠标点击或拖拽来实现数据筛选、数据比较等功能。这些功能使得使用者可以更加灵活地探索和分析数据。 值得一提的是,这个库还提供了一些额外的功能,如数据绑定、动画效果等。数据绑定可以方便地将图表与数据源进行绑定,实时更新图表内容。动画效果可以为图表增添一些动态效果,增强用户的体验。 总之,wpf-强大的图表.zip 是一个功能丰富、易于使用和定制的图表库,适用于需要数据可视化的 WPF 应用程序开发。无论是做数据分析、报表生成还是展示数据趋势,使用这个库可以轻松创建出漂亮、交互性强的图表,提升应用程序的用户体验。 ### 回答3: WPF-强大的图表.zip是一个压缩文件,包含了使用WPF(Windows Presentation Foundation)技术开发的强大图表控件库。WPF是微软推出的一种用于创建丰富、灵活、交互性高的应用程序的技术,它采用XAML(Extensible Application Markup Language)语言描述界面,支持数据绑定、动画效果等丰富功能。 在WPF-强大的图表.zip中,我们可以找到多种类型的图表控件,比如折线图、柱状图、饼图等。这些图表控件支持灵活的自定义配置,可以通过数据绑定将数据源与图表进行关联,实现数据的可视化展示。同时,这些图表控件还支持动画效果,能够给用户提供更加生动、直观的数据展示体验。 WPF-强大的图表.zip还包含了一些示例代码和文档,帮助开发人员快速上手使用这些图表控件。开发人员可以参考示例代码,理解如何使用这些图表控件创建各种不同类型的图表,并且通过文档来学习控件的使用方法和属性配置。 总之,WPF-强大的图表.zip提供了一套功能强大、灵活易用的图表控件库,方便开发人员在WPF应用程序中实现各种各样的数据可视化需求。无论是企业数据分析,还是个人数据展示,这些图表控件都能够帮助开发人员快速构建出美观、交互性强的图表界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉特思米(gitusme)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值