【开源项目】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.mzph.cn/news/602768.shtml

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

相关文章

基于多反应堆的高并发服务器【C/C++/Reactor】(中)线程池的启动和从线程池中取出一个反应堆实例

一、线程池的启动 &#xff08;主线程&#xff09; // 启动线程池 &#xff08;主线程&#xff09; void threadPoolRun(struct ThreadPool* pool) {/*线程池被创建出来之后&#xff0c;接下来就需要让线程池运行起来&#xff0c;其实就是让线程池里的若干个子线程运行起来*//…

小微企业在银行信贷相关产品和机器学习建模案例_论文科研_企业调研

各银行小微企业贷款业务 互联网的时代&#xff0c;大量新信息技术的涌现和网络的无处不在&#xff0c;想要抢占这片金融天地&#xff0c;必须重视小微金融业务&#xff0c;小微企业是一直具有重大潜力的客户&#xff0c;商业银行、消金公司发展小微信贷业务可以拓宽自身客户群…

java公交系统毕业论文

公交系统毕业论文 毕业设计题目:基于Java的公交车查询系统的设计与实现 年 月 日 毕 业 设 计 中 文 摘 要 随着中国经济的快速发展&#xff0c;我国交通运输业也在不断的优化发展。公交车的站点和线路的增多也给人们的出行带来了极大的不便&#xff0c;特别是针对一些旅客…

系统学英语 — 音标音节 — 能读就能写

目录 文章目录 目录概览12 个单元音8 个双元音28 个辅音音节 概览 12 个单元音 序号发音音标助记字母组合备注1拖长音 前腔[i:]eate、ea、ee、ie2短促音 前腔[i]bige、i、y3拖长音 后腔[a:]aska、ar4短促音 中腔[ʌ]runu、o、ou、oo5拖长音 中腔[ə:]earlyer、ir、or、ur…

Python群论:置换和置换群

文章目录 简介置换的复合置换群 简介 所谓置换&#xff0c;简单地说就是交换两个元素的位置。例如&#xff0c;给定一组元素 a 0 , a 1 , a 2 a_0, a_1, a_2 a0​,a1​,a2​&#xff0c;那么通过置换之后&#xff0c;这组元素可以变成 a 0 , a 2 , a 1 a_0, a_2, a_1 a0​,a2​…

SpringBoot配置多数据源

SpringBoot配置多数据源 前置条件数据库配置pom.xmlapplication.yml代码Two.javaTwoMapper.javaTwoMapper.xmlTwoService.javaTwoServiceImpl.javaTwoController.java效果前置条件 项目已经集成了mysql单数据源 数据库 数据库demo CREATE TABLE `test` (`id` int(11) NOT NUL…

LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统

一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。 您的任何格式的本地文件都可以往里扔&#xff0c;即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…

基于商品列表的拖拽排序后端实现

目录 一&#xff1a;实现思路 二&#xff1a;实现步骤 二&#xff1a;实现代码 三&#xff1a;注意点 一&#xff1a;实现思路 后台实现拖拽排序通常需要与前端进行配合&#xff0c;对商品的列表拖拽排序&#xff0c;前端需要告诉后端拖拽的元素和拖动的位置。 这里我们假…

MySQL第四战:视图以及常见面试题(上)

目录 目录&#xff1a; 一.视图 1.介绍什么是视图 2.视图的语法 语法讲解 实例操作 二.MySQL面试题 1.SQL脚本 2.面试题实战 三.思维导图 目录&#xff1a; 随着数字化时代的飞速发展&#xff0c;数据库技术&#xff0c;特别是MySQL&#xff0c;已经成为IT领域中不可…

Java-网络爬虫(二)

文章目录 前言一、WebMagic二、使用步骤1. 搭建 Maven 项目2. 引入依赖 三、入门案例四、核心对象&组件1. 核心对象SipderRequestSitePageResultItemsHtml&#xff08;Selectable&#xff09; 2. 四大组件DownloaderPageProcessorSchedulerPipeline 上篇&#xff1a;Java-网…

使用Enterprise Architect绘制架构图

如何使用Enterprise Architect绘制架构图 之前没有使用过Enterprise Architect软件绘制&#xff0c;目前由于工作需求&#xff0c;需要使用Enterprise Architect绘制一些架构图&#xff0c;现在只使用Enterprise Architect绘制过简单的Flow Chart&#xff0c;想请教一下大神们…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑系统调峰需求与光热电站收益平衡的储热容量优化配置》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题表明研究的主题涉及到光热电站系统中的储热容量优化配置&#xff0c;而优化的目标是在系统中实现调峰需求并平衡光热电站的收益。让我们逐步解读这…

学习使用layPage, 多功能JS分页组件/插件的方法

学习使用layPage, 多功能JS分页组件/插件的方法 效果图分页代码 效果图 点击查看链接 分页代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>Layui</title><meta name"renderer" content"we…

数字系统课程设计与VHDL报告

获“优”&#xff0c;含实验结果视频、代码、报告&#xff0c;99.99%原创&#xff0c;配置环境太复杂不包跑通&#xff0c;要的私信。

在 Docker 中配置 MySQL 数据库并初始化 Project 项目

1. 文件准备 1.1. 添加 SQL 文件头部内容 每个 SQL 文件的头部需要添加以下内容&#xff1a; DROP DATABASE IF EXISTS xx_..; CREATE DATABASE xx_..; USE xx_..;1.2. 修改 AUTO_INCREMENT 在每个 SQL 文件中&#xff0c;将 AUTO_INCREMENT 修改为 1。 1.3. 插入机型 在 SQL…

软件测试|深入学习 Docker Logs

简介 Docker 是一种流行的容器化技术&#xff0c;它能够帮助用户将应用程序及其依赖项打包成一个可移植的容器。Docker logs 是 Docker 提供的用于管理容器日志的命令&#xff0c;本文将深入学习 Docker logs 的使用和管理&#xff0c;帮助用户更好地监测和解决容器问题。 Do…

QT c++和qml交互实例

文章目录 一、demo效果图二、c和qml交互的基本方式1、qml访问C类对象 三、关键代码1、工程结构图2、c代码MainWindow.cppMainQuickView.cppStudentInfoView.cppStudentInfoModel.cpp 3、qml代码main.qmlMainQuickTopRect.qmlMainQuickMiddleRect.qmlMainQuickMiddleTableRect.q…

蓝桥杯基础知识2 全排列 next_permutation(), prev_permutation()

蓝桥杯基础知识2 全排列 next_permutation()&#xff0c; prev_permutation() #include<bits/stdc.h> using namespace std;int a[10];int main(){for(int i 1; i < 4; i)a[i] i; //4*3*2*1 24bool tag true;while(tag){for(int i1; i < 4; i)cout << a[…

CoTracker 环境配置与ORB 特征点提取结合实现视频特征点追踪

CoTracker 环境配置&与ORB 特征点提取结合实现视频特征点追踪 文章目录 CoTracker 环境配置&与ORB 特征点提取结合实现视频特征点追踪Step1&#xff1a;配置 CoTracker 环境Step2&#xff1a;运行官方的例程Step3&#xff1a;结合 ORB 特征点提取结果展示&#xff1a; …

蓝桥杯练习题(一)

&#x1f4d1;前言 本文主要是【算法】——蓝桥杯练习题&#xff08;一&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …