自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (24)
  • 收藏
  • 关注

原创 Unity3d数字化看板-多关节机器人运动控制

机械手运动控制主要是关节的旋转,通过控制多个关节的角度,实现对机械手的同步控制机械手运动控制,可以分解为多个关节的运动,下一关节是跟随在上一关节运动,在处理模型的时候将下一关节作为子物体挂在上一关节下,通过控制多个关节的角度,达到机械手的运动同步。模型示例如下(模型是从网上下载)

2023-04-24 22:51:28 5619 17

原创 ModbusTCP协议报文解析

报文格式交互(通信)标识:2个字节 为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文。协议标识:2个字节 表示该条指令遵循ModbusTCP协议,一般都为00 00报文长度:2个字节 表示后面数据的长度,有几个字节,高字节在前(前六位Modbus/TCP协议不同功能码通用)设备标识 :1个字节 设备地址,这个可以用于局域网里面的具体的地址,如果目标机器有固定ip,这个就不起作用,直接上写成 00功能码:1个字节 功能码在modbus协议用于表示信息帧的功能....

2022-11-23 20:46:12 30597 5

原创 C#实现数据采集系统-数据反写(3)ModbusTcp写入数据模块开发

线圈基本都是单个写入,这里就使用05功能码寄存器写入可能多个同时写入,如int32,float等,需要四个字节,则需要2个寄存器,并且数据的两个寄存器是连续的,,其他的如Int64,double,则需要4个寄存器,我们可以一起写入调高效率。跟读报文一样,定义一个写入报文的头,前10个报文,再接收到写入数据是再在后面接上对应的数据字段然后再初始化的时候修改从站地址。

2024-08-23 11:02:44 1190

原创 C#实现数据采集系统-数据反写(2)消息内容处理和写入通信类队列

在ModbusTcp通信类中,添加一个写入队列和写入方法,写入点位先添加在队列中,然后再读数据间隙中,实现写入。处理消息,将消息转换成对应点位和值,然后调用modbustcp的写入方法。然后在启动的时候,订阅各个设备ID的写入主题,添加控制方法。用于存储每个设备的通信类,使用键值对。存储设备ID和通信类,用于快速查找。实现消息订阅方法-设备控制。

2024-08-22 23:04:57 448

原创 C#实现数据采集系统-数据反写(1)MQTT订阅接收消息

订阅方法实现:订阅主题,添加到_topicActions,如果已经连接,则直接订阅,没有连接,则等待连上的时候自动订阅,增加锁来确保订阅成功。然后需要一个键值对用于存储这个关系。在连接方法中,添加订阅。

2024-08-22 22:51:37 812

原创 C#实现数据采集系统-系列总览

基于C# +Net 6.0开发数据采集系统ModbusTcp实现plc数据采集Mqtt实现数据发送

2024-08-21 22:17:52 426

原创 C#实现数据采集系统-多设备采集

数据采集系统在网络环境下,性能足够,可以实现1对多采集,需要支持多个设备进行同时采集功能,现在就开发多设备采集功能。

2024-08-21 17:46:00 659

原创 C#实现数据采集系统-周期配置、功能配置

之前采集、推送周期都是写死的现在就是新增一个需求,需要能够配置采集时间,比如我想1s采集一次,5s采集一次或者1分钟采集一次,然后定时推送也是,如此,我想设置推送的时间;还有定时推送和变化推送功能我可以配置是否开启关闭,有时候我只需要一种推送功能即可这样我们就可以在配置中增加这几个个参数。

2024-08-20 08:47:04 687

原创 C#实现数据采集系统-实现变化推送

现在每采集一次都会推送数据,消息量就会比较大,而且点位状态不变化,也会一直推送,会占用消耗大量资源。

2024-08-20 08:43:27 545

原创 visual studio使用技巧:快速生成Json、XML对应类

在项目中经常用到json或者xml作为配置文件,进行序列化和反序列化就需要有对应的类,重新写一遍类就比较麻烦,这里就讲一下通过visual studio快速生成json或者xml对应类型的方法。

2024-08-19 10:39:39 743

原创 C#实现数据采集系统-系统优化服务封装

现在我们调用modbustcp和mqtt都直接在Program,所有加载和功能都混合在一起,比较难以维护类似asp.net core项目的Program.cs代码如下,构建服务配置和启动要实现的效果,Main方法中就是一个服务启动,只需要几行代码。

2024-08-02 10:14:58 221

原创 C#实现数据采集系统-配置文件化

配置信息ip端口,还有点位信息,什么的都是直接在代码里直接写死,添加点位,修改配置,比较麻烦,每次修改都需要重新生成打包。所以将这些配置都改成配置文件,这样只需要修改配置文件,程序无须修改,即可更新。配置代码:如果我们有100个采集,一个个去添加就很累,或者ip地址改了,都要重新改了打包发布再部署所以将这些属性和信息都改成配置文件。

2024-08-02 09:43:48 427

原创 C#实现数据采集系统-Mqtt实现采集数据转发

在数据采集系统中,通过ModbusTcp采集到数据之后,再通过MQTT转发到其他应用。

2024-07-28 23:23:55 577

原创 C#实现数据采集系统-modbustcp数据通知

在ModbusTcp模块中已经能够获取到正确的plc值,接下来做的就是如何让外部调用的程序获取到相关的数据,主要就是两种方法:通过对象属性进行共享;通过事件进行推送。

2024-07-26 23:29:30 353

原创 C#实现数据采集系统-Tcp粘包处理

Tcp通信中会出现粘包的情况,Tcp数据不是完全一收一发,而是会将接收到数据存在一个接收缓冲区,等到调用接收的把数据从缓冲区取出来大部分时候,我们收发消息频率不高,看上去就是发一条,收一条,完整数据;理论上,接收一次,是会出现各种情况,粘包的几种情况示例:比如 modbustcp响应报文,我们查询三次,正常是收到三条下面这样报文123。

2024-07-26 23:19:06 221

原创 C#实现数据采集系统-字节序处理和代码优化

C# 小端模式modbustcp中,寄存器都是两个字节,寄存器内部两个字节都是大端存储,如果需要存储int32,float,double等数据,则需要2个或者更多寄存器,目前大部分plc在处理时,寄存器之间都是采用小端存储,寄存器里是大端,形成了小大端模式,就是CD AB,GHEFCDAB大端 ABCD小端DCBA小大端模式CD ABC#中,都是小端模式存储,所以处理就是CDAB→DCBA,GHEFCDAB→HGFEDCBA。

2024-07-17 18:40:35 229

原创 C#实现数据采集系统-查询报文处理和响应报文分析处理

线圈:一个字节可以表示8个地址,1-8个线圈只需要1个字节,9-16个两个字节,以此类推。循环所有点位信息,然后修改发送报文的功能码,起始地址,读寄存器数量发送报文。从格式看,前9位格式和长度是一样的,从第十位数据位开始长度不一样。数据总长可以根据查询报文中,查询数量来计算出。FF-1111 1111 一个字节表示八位。可以看到读寄存器跟线圈报文长度是不一样的。寄存器:需要2个字节来表示一个寄存器。计算公式:查询数量/8的整数+1;计算公式:查询数量x2。

2024-07-17 18:37:41 290

原创 C#实现数据采集系统-ModbusTCP查询报文分析和实现、通信实现、测试项目

Modbus是工业通信协议中广泛使用的协议,大部分设备都支持。Modbus TCP是一种基于TCP/IP网络的工业通信协议,它是Modbus协议的一种变种,专门设计用于在网络上传输数据。先定义一个设备链路类DeviceLink,用于配置设备的信息,ip、端口然后根据上面读的发送报文,可以得出,设备配置还需要一个从站地址set;set;/// 从站地址set;} = 1;然后定义一个寄存器点位类RegisterPoint,用于定义数据对象,对应PLC中的寄存器

2024-07-17 18:36:24 423

原创 C#实现数据采集系统-实现功能介绍

我们这里主要使用C#( .Net 6)来实现一个数据采集系统,从0到1搭建数据采集系统,从系统分析,功能拆解,到一一实现,然后还有C#进阶的技术讲解。

2024-07-17 18:34:56 1550

原创 VS code设置默认终端为cmd

将default profile设置为cmd(Command Prompt)终端+号右侧下拉菜单,“配置终端设置。终端默认添加的就是cmd。

2024-07-15 22:16:47 400

原创 Unity项目配置和启动

拿到一个unity项目的工程,如下是一个完整的unity目录。

2024-07-15 15:18:33 1058

原创 在C#/Net中使用Mqtt

Nuget包安装-MQTTnet添加命名空间创建一个MqttClient创建连接发送消息先创建一个mqtt消息,填入主题(Topic),消息内容(PayloadSegment),然后使用方法发送在mqttx中订阅对应主题,就能收到订阅主题中,表示通配符,说明该分类下testtpoic/的主题都会订阅。订阅一个主题。

2024-07-01 16:52:30 836

原创 mqtt介绍和环境安装

MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。下载一个开源的emqx服务器和mqttx客户端工具。

2024-07-01 16:40:38 364

原创 ModbusRTU协议报文解析

ModbusRTU协议报文解析:1个字节 指定目标设备地址(从站地址):1个字节 功能码在modbus协议用于表示信息帧的功能,例如读取线圈状态、读取寄存器等。N个字节 后面数据根据不同功能码不同。:循环冗余校验码,用于检测报文完整性和数据错误

2024-06-24 23:39:16 3681

原创 C# 唯一性进程的方法封装(Winform/WPF通用)

【代码】C# 唯一性进程的方法封装(Winform/WPF通用)

2024-06-23 14:03:10 259

原创 工业数字孪生:智能制造的新引擎

数字孪生技术作为智能制造的重要支撑技术,正在全球范围内快速发展并得到广泛应用。随着技术的不断成熟和创新,数字孪生将在推动制造业数字化转型、提升生产效率、降低运营成本等方面发挥越来越重要的作用。未来,数字孪生技术有望成为制造业不可或缺的一部分,引领制造业进入一个全新的智能化时代。

2024-06-23 12:12:42 1008

原创 WPF文本绑定显示格式StringFormat设置-特殊格式时间日期和多数据绑定

在Textblock等文本控件中,我们经常要显示一些日期和时间,默认显示的日期,不是我们想要的,所以需要自定义格式,还有多个数据可能需要绑定到一个文本中,都可以通过设置`StringFormat`来实现

2024-06-21 16:32:40 938

原创 WPF文本绑定显示格式StringFormat设置-数值类型处理

在Textblock等文本控件中,我们经常要绑定一些数据类型,但是我们希望显示的时候能够按照我们想要的格式去显示,比如增加文本前缀,后面加单位,显示百分号等等,这种就需要对绑定格式进行处理本文主要介绍一些数值类型的格式处理。

2024-06-21 15:52:05 1973

原创 Net开源项目推荐-WPF控件样式篇

WPF控件库,比较常用的WPF开源控件库,对WPF原有控件样式都进行了重写和扩展,也增加了许多特别的控件,非常好用。wpf-uidesign使用WPF创建的一些UI设计案例,包含了8套设计UI可供选择,直接可用。VS编辑器风格的WPF 文档和工具窗口布局容器,标签页可自由拖动,停靠的布局容器,非常好用。WPFDevelopers控件库,包括各类特殊的控件,并且持续更新中。WPF中的曲线库,有各种曲线的控件。

2024-06-20 10:03:39 656 1

原创 IIS代理配置-反向代理

前后端分离项目,前端在开发中使用proxy代理解决跨域问题,打包之后无效。未配置前无法访问部署环境为windows +IIS,要在iis设置反向代理。

2024-06-20 08:29:56 2802

原创 C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending

在C#中,List类提供了多种方法来进行排序,最常用的是Sort方法和中提供的扩展方法OrderBy/OrderByDescending`方法。这些方法可以按照特定的顺序重新排列列表中的元素。

2024-06-19 23:53:24 848

原创 C#开发-集合使用和技巧(七)分组方法GroupBy的使用

GroupBy是 C# 中的一个 LINQ 扩展方法,用于根据指定的键将序列中的元素分组。它可以根据提供的键函数将数据分割成多个组,每组包含具有相同键的元素。`GroupBy`也是一个在集合用比较常用的方法,也是比较好用的,适用于对序列中的元素进行分组,他有多种重载,可以实现不同的功能

2024-06-19 23:26:41 2592 1

原创 C#开发-集合使用和技巧(六)特殊转换方法SelectMany的介绍和用法

SelectMany方法在C#中用于将集合中的元素转换为其他类型的集合,并将这些集合扁平化为一个单一的序列。它是LINQ的一部分,允许你在一个序列上进行投影和过滤操作,然后将结果合并成一个序列。

2024-06-18 15:02:14 858

原创 C#唯一进程的处理Winform/WPF

在C#客户端(Winform/WPF)开发过程中,有的情况需要确保程序的唯一性,如果启动同时启动同一个程序多次,可能导致数据,通信等异常。下面有两种方法来实现唯一进程。1.使用进程(Process)判断;2.使用互斥体(Metux)实现

2024-06-18 14:23:46 444

原创 C#开发-集合使用和技巧(五)集合中的转换方法

在C#中,`Select`, `ToList`, 和 `ToArray` 都是用于集合转换的方法,它们各自有不同的用途和适用场景。Select用于转换集合里面对象的类型,从一个类型转变到另一个类型ToList和ToArray主要用于集合类型转换,一般查询方法返回类型,需要这两个方法转换到对应可操作的集合,这两个方法一般是配合其他方法使用,当然也可以用于List与数组互相转换。

2024-06-17 17:58:46 872

原创 C#特性-CallerMemberName、CallerFilePath和CallerLineNumber的介绍和应用

在csharp中,`CallerMemberName`, `CallerFilePath`, 和 `CallerLineNumber` 是编译时常量,它们是csharp 5.0引入的特性,用于提供有关调用堆栈的信息,通常用于日志记录和调试。这些特性可以自动填充方法的参数,无需显式传递信息。

2024-06-17 15:50:55 725

原创 C#开发-集合使用和技巧(四)集合中常用的查询方法

本篇介绍集合的各种查询方法和使用主要介绍条件查询Where,单个对象查询First/FirstOrDefault、功能查询All、Any、Count等,结合代码说明和应用场景详细介绍

2024-06-15 23:35:38 285

原创 C#开发-集合使用和技巧(三)集合扩展方法介绍

这些方法允许我们以声明式的方式处理集合数据。下面是Enumerable方法描述类别All测试序列中的所有元素是否满足指定的条件。查询方法Any检查序列是否包含任何元素,或者满足指定条件的元素。查询方法Average计算序列中所有元素的平均值。数值聚合Concat连接两个序列。操作方法Contains检查序列中是否包含某个元素。查询方法Count返回序列中元素的数量。查询方法Distinct返回序列中不同的元素。操作方法ElementAt返回序列中指定位置的元素。查询方法Except。

2024-06-15 22:58:29 195

原创 C#开发-集合使用和技巧(二)Lambda 表达式介绍和应用

Lambda 表达式在 csharp 中是一种简洁的方式来表示匿名方法(也称为匿名函数)。Lambda 表达式的语法使用=>操作符,左侧是输入参数,右侧主体是表达式或代码块。Lambda 表达式主要用于简化 LINQ 查询和事件处理代码,在开发过程中,可以很好的简化代码。Lambda 表达式是 C# 中强大的功能特性,用于简化代码、提高可读性,特别是在 LINQ 查询和事件处理方面。它们的语法简单而灵活,能很好地提高代码的简洁性和可维护性。

2024-06-14 23:14:04 778

原创 C#开发-集合使用和技巧(一)常用集合和方法介绍

集合是C#中用于存储和管理一组对象的数据结构。它们提供了比基本数据类型更灵活和强大的功能。集合可以动态调整大小,这意味着您不需要预先知道集合中将要存储多少元素。在C#中,集合通常指的是命名空间下的类,这些类允许您存储强类型的元素集合。基本的集合都在命名空间中,该命名空间下面有几个命名空间,对集合进行分类通用集合,包含用于定义泛型集合的接口和类,可允许用户创建强类型集合。List等线程安全的集合类,提供几个线程安全的集合类,主要用于多个线程访问一个集合的情况,例如等。

2024-06-14 16:02:45 751

20条设备故障报警记录sql

20条设备故障报警记录 - 告警代码 - 告警名称 - 告警等级 - 状态 - 告警时间 - 处理人 - 处理时间

2024-08-02

C# WPF MVVM的Stylet框架使用示例

C# WPF MVVM的Stylet框架使用示例 Stylet 是一个极简但功能强大的 MVVM 框架,灵感来自Caliburn.Micro。它的目的是进一步减少复杂性和魔力,让不熟悉任何 MVVM 框架的人(同事)能够更快地上手。 它还提供了 Caliburn.Micro 中没有的功能,包括它自己的 IoC 容器、简单的 ViewModel 验证,甚至还有与 MVVM 兼容的 MessageBox。 较低的 LOC 数量和非常全面的测试套件使其成为使用和验证/确认 SOUP 开销较高的项目的一个有吸引力的选择,其模块化工具包启发式架构意味着您可以轻松地只使用您喜欢的部分,或替换您不喜欢的部分。

2024-07-21

widnows自动关机工具.exe

自己写的自动关机工具:可以设置关机或者重启;定时 关或者倒计时关

2024-07-09

海康工业相机软件 MVS-STD-4.0.1-230303

海康机器人 相机调试软件MVS MVS客户端 MVS_STD_4.0.1_230303

2024-07-09

c#操作excel NPOI使用手册

c#操作excel NPOI使用手册 NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。在本文发布时,POI的最新版本是3.5 beta 6。 NPOI 1.x是基于POI 3.x版本开发的,与poi 3.2对应的版本是NPOI 1.2,目前最新发布的版本是1.2.1,在该版本中仅支持读写Excel文件和Drawing格式,其他文件格式将在以后的版本中得到支持。

2024-07-09

windows下软件的运行常用依赖

windows下软件的运行常用依赖,包括:微软常用运行库合集,各个版本vc,dotNet

2024-07-09

stylet中文文档翻译

stylet中文文档翻译 Stylet 是受Caliburn.Micro启发的最小但功能强大的 MVVM 框架。它的目的是进一步降低复杂性和魔力,让不熟悉任何 MVVM 框架的人(同事)更快地上手。 它还提供了 Caliburn.Micro 中没有的功能,包括它自己的 IoC 容器、简单的 ViewModel 验证,甚至是兼容 MVVM 的 MessageBox。 低 LOC 数量和非常全面的测试套件使其成为使用和验证/验证 SOUP 带来高开销的项目的一个有吸引力的选择,其模块化工具包启发的架构意味着它很容易只使用您喜欢的部分,或替换你不知道的位。

2024-07-09

隐藏窗口的powershell脚本

是哦用powershell脚本控制窗口的隐藏和显示

2024-07-09

Everything-1.4.1.1024的32位

"Everything" 是 Windows 上一款搜索引擎,它能够基于文件名快速定文件和文件夹位置。 不像 Windows 内置搜索,"Everything" 默认显示电脑上每个文件和文件夹 (就如其名 "Everything")。 您在搜索框输入的关键词将会筛选显示的文件和文件夹。

2024-07-09

SwitchyOmega代理配置文件备份

SwitchyOmega代理配置文件备份,配置常用规则

2024-07-09

FSCapture抓屏工具-免安装版

FSCapture抓屏工具 截屏 包括了全屏截取,当前活动窗口截取,截取选定区域,多边形截取和截取滚动页面等,基本上常用的都有了。特别是滚动截取,许多朋友为了这个功能,不惜安装各种重量级的截屏软件,甚至四处下载各种软件的破解补丁。 图像浏览 / 编辑 FS Capture还包括快速(浏览/编辑图像)的功能,可以点击主窗口的“打开”图标快速打开一幅图片,进行简单的缩放、裁切、旋转、加文字等轻量级的操作。把网页中图片拖到 FS Capture 的窗口上,会快速打开图像浏览窗口。 视频录制 7.0 版本开始具备的功能,只需点击“视频录制”按钮,即可选择一个录制范围,可以选择“Window/Object”(窗口或对象)、“Rectangular Area”(矩形区域)、“Full Screen Without Taskbar”(任务栏的全屏)、“Full Screen”(全屏)等范围。选择范围后,即可点击 Record 按钮,非全屏范围,还需要选择好一个区域,然后在弹出的窗口点,击“Start”按钮,即可开始录制了,最后可以按F11键停止。

2024-07-09

chrome插件 OneTabV1.33

节省高达95%的内存,并减轻标签页混乱现象 当您发现自己有太多的标签页时,单击OneTab图标,将所有标签页转换成一个列表。当您需要再次访问这些标签页时,可以单独或全部恢复它们。

2024-07-09

C# 集合一系列扩展方法使用示例

C# 集合一系列扩展方法 Enumerable 使用示例Select、 Where、ToList、ToArray、FirstOrDefault、All、Any等等和应用场景

2024-06-17

WPF mvvm框架Stylet使用教程-窗体交互用法

WPF mvvm框架Stylet使用教程-窗体交互用法,打开窗体、关闭窗体

2023-04-16

Wpf mvvm的Stylet框架特殊用法示例

Wpf mvvm的Stylet框架特殊用法示例,事件绑定、控制按钮是否启用、跨ViewModel进行绑定事件方法

2023-04-15

Wpf mvvm的Stylet框架基础用法示例

Wpf mvvm的Stylet框架基础用法示例:使用绑定、属性绑定、命令绑定、ViewModel和View绑定、多种方式注入等

2023-04-12

WPF的MVVM模式下的命令绑定示例

WPF的MVVM模式下的命令绑定示例,包括普通的Command绑定,和CommandParameter参数传入,还有其他命令通过System.Windows.Interactivity.WPF实现绑定和参数传入

2023-02-23

WPF的MVVM模式各种基础的绑定的示例

MVVM各种基础的绑定:视图View跟ViewModel绑定,将ViewModel对象赋值给DataContext;普通属性绑定;集合绑定ItemsSource,数量不变和数量变化ObservableCollection

2023-02-22

WPF的MVVM简单使用-绑定和命令示例

MVVM是Model-View-ViewModel的简写,分为视图(View)、视图模型(ViewModel)、模型(Model)三部分。MVVM 模式就是将其中的View 的状态和行为抽象化,形成数据绑定和命令,将视图 UI 和业务逻辑分开。由ViewModel处理相关的业务逻辑,与View对应,负责获取和更新Model的数据。 绑定和命令示例工程

2023-02-21

Modbustcp通信接口文档模板

Modbustcp通信接口文档模板(文档内表格),整理modbustcp接口文档形成模板,包括基本配置、点位配置表、协议说明、错误响应说明等等

2023-02-15

net framework从4.6到4.8.1不同版本的开发者工具包和简体中文语言包

net framework从4.6到4.8.1不同版本的开发者工具包和简体中文语言包,可以按需下载。同一版本有enu和chs两个包,enu是开发包本体,chs简体中文语言包,先安装enu,再安装chs

2023-01-24

net framework4.0和4.5开发包(用于visual studio 2022 安装net旧版本)

visual studio 2022 安装net旧版本(net framework4.0和4.5),Visual Studio 2022安装程序中单个组件中没有 .net framework4.0或者.net framework4.5的问题。该资源包从通过nuget 下载 4.0 和4.5安装包,打包有效部分,只需要将里面的v4.0和v4.5文件夹放到C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework路径下面,重启vs2022即可。具体流程可见:https://blog.csdn.net/qq_39427511/article/details/128071790

2023-01-10

自己搭建IOC容器(C#)

实现IOC容器一些复杂功能 (1)加入生命周期,单例和多例模式 (2)增加服务描述类 (3)实现一对多添加标志注册 (4)实现容器构建和使用分离 实现基本的注册和服务获取

2022-12-01

WPF使用外部字体文件

WPF导入使用外部字体文件,使用FontFamily加载字体,在App.xaml或者资源字典中定义,引用字体样式,设置字体为全局的默认字体

2022-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除