【开源项目】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: 判断对象是否为nullMyObject 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是否为nullstring 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转换为DateTimestring 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转换为int32string intStr = "100";var intValue = intStr.ToInt32() + 10;System.Console.WriteLine("Example 7 输出结果:" + intValue);// Example 8: 将string转换为decimalstring decimalStr = "3.141592653589793238462643383279502884197";var decimalValue = decimalStr.ToDecimal();System.Console.WriteLine("Example 8 输出结果:" + decimalValue);// Example 9: 将string转换为uristring uriStr = "https://github.com/gitusme/Com.Gitusme.Net.Extensiones";var uriValue = uriStr.ToUri();System.Console.WriteLine("Example 9 输出结果:" + uriValue.Host);// Example 10: 将string转换为colorstring 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327940.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:统计指定范围里的数 给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。 时间限制:1000 内存限制:65536 输入 第一行1个整数n,分别表示序列的长度。(0 < n ≤…

小游戏实战丨基于Tkinter的五子棋小游戏

文章目录 写在前面Tkinter五子棋系列文章写在后面 写在前面 本期内容&#xff1a;基于tkinter的五子棋小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700190 实验环境 python3.11及以上pycharmtkinter Tkinter Tkinter是Python的一个标准…

5G-A,一根蓄满能量的弹簧

光阴转瞬&#xff0c;恍然间2024已经来到身边。经历了2023年全球AI技术大爆发&#xff0c;以及智能汽车、虚拟现实、自主科技等诸多领域取得关键进展。想必大家希望知道在新一年中有哪些值得期待的科技增长空间。 如果是这样&#xff0c;那么不妨将目光投向5G-A。 与其他科技领…

组合数据(Python实现)

一、主要目的&#xff1a; 1&#xff0e;熟悉组合数据的类型。 2&#xff0e;掌握列表、元组、字典、集合等组合数据的创建、访问方法。 3&#xff0e;掌握组合数据推导式的使用方法 4&#xff0e;熟悉组合数据的常见应用。 二、主要内容和结果展示&#xff1a; 1. 使用两…

Linux驱动学习—中断

1、中断基础概念 1.1 什么是中断 CPU在正常运行期间&#xff0c;由外部或者内部引起的时间&#xff0c;让CPU停下当前正在运行的程序&#xff0c;转而去执行触发他的中断所对应的程序&#xff0c;这就是中断。 响应中断的过程&#xff1a; <1>中断请求 <2>中断…

C#中使用正则表达式实现汉字转拼音

目录 一、正则表达式基础 二、实例 1.程序入口Form1.cs 2.类库PinYin.cs 三、生成效果 四、实例中的知识点 1.Regex 2.ToCharArray() 3.Regex.IsMatch 方法 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;重载 &#xff08;3&#xff09;IsMatch(Stri…

MySQL将多条数据合并成一条的完整示例

数据库中存的是多条数据&#xff0c;展示的时候需要合并成一条 数据表存储形式如下图 以type分组&#xff0c;type相同的算一条&#xff0c;且保留image和link的所有数据&#xff0c;用groupBy只保留一条数据 解决方案&#xff1a;用GROUP_CONCAT 完整语法如下 group_concat…

el-upload上传文件

需求&#xff1a;选中或拖拽文件后&#xff0c;使用http-request属性实现自动上传&#xff0c;并根据后端传回来的结果显示错误和控制fileList的显示&#xff0c;如果后端返回成功&#xff0c;则文件显示在文件列表处&#xff0c;如果后端返回失败&#xff0c;则文件列表不显示…

真核微生物基因组质量评估工具EukCC的安装和详细使用方法

介绍&#xff1a; GitHub - EBI-Metagenomics/EukCC: Tool to estimate genome quality of microbial eukaryotes 安装&#xff1a; docker&#xff1a; docker pull microbiomeinformatics/eukcc 推荐conda 环境&#xff1a; conda install -c conda-forge -c bioconda …

【LMM 014】NExT-GPT:能够输入和生成任意模态的多模态大模型

论文标题&#xff1a;NExT-GPT:Any-to-Any Multimodal Large Language Model 论文作者&#xff1a;Shengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji, Tat-Seng Chua 作者单位&#xff1a; NExT Lab, National University of Singapore 论文原文&#xff1a;https://arxiv.org/abs…

【java爬虫】首页显示沪深300指数走势图以及前后端整合部署方法

添加首页 本文我们将在首页添加沪深300指数成立以来的整体走势数据展示&#xff0c;最后的效果是这样的 单独贴一张沪深300整体走势图 我感觉从总体上来看指数还是比较稳的&#xff0c;没有特别大的波动&#xff0c;当然&#xff0c;这只是相对而言哈哈。 首先是前端页面 &l…

ThinkPHP5多小区物业管理系统源码(支持多小区)

基于 ThinkPHP5 Bootstrap 倾力打造的多小区物业 管理系统源码&#xff0c;操作简单&#xff0c;功能完善&#xff0c;用户体验良好 开发环境PHP7mysql 安装步骤: 1.新建数据库db_estate,还原数据db_estate.sql 2.修改配置文件&#xff1a;application/database.php 3.运…