- 博客(243)
- 资源 (92)
- 收藏
- 关注
原创 C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例
摘要:本文介绍了如何使用MindFusion.Diagramming框架在C#中创建流程图应用程序。主要内容包括:1)新建Windows窗体项目并通过NuGet安装框架;2)添加DiagramView控件和Diagram组件;3)设置基本属性如网格显示、节点连接限制;4)实现节点创建、编辑和双击事件处理;5)添加"开始"和"结束"节点作为流程图基础;6)开发节点文本编辑窗口;7)实现获取所有节点和连接信息的按钮功能。文章通过代码示例详细演示了框架的基本使用方法,包括节
2025-06-07 16:47:20
607
原创 C#使用MindFusion.Diagramming框架绘制流程图(1):基础类型
摘要:MindFusion.Diagramming是一款基于C#的图表绘制框架,通过MindFusion.Diagramming.dll库实现。该框架构建于GDI+之上,支持创建流程图、网络图等多种图表类型。核心组件包括Diagram(图表容器)、DiagramNode(节点基类)、DiagramLink(连线)和各类具体节点(如ShapeNode几何节点、SvgNode矢量节点、TableNode表格节点等)。框架提供丰富的属性控制,如节点输入输出连接、形状样式、文本编辑等,并支持XML序列化、拖放操作和
2025-06-06 18:20:13
883
原创 C#对集合进行分组IGroupingout TKey, out TElement>
C#中的Linq提供了GroupBy()方法,用于根据指定的键选择器函数对集合元素进行分组,返回一个IEnumerable<IGrouping<TKey, TSource>>对象。IGrouping<TKey, TElement>接口表示具有公共键的对象集合,其中TKey为键的类型,TElement
2025-05-22 20:21:20
344
原创 Python进阶(3):函数(接上篇)
两个下划线开始,两个下划线结束的属性代表特殊指定属性函数名.__name__ 打印函数名函数名.__defaults__ 打印默认值元组匿名函数(lambda)是指没有名字的函数,应用在需要一个函数但是又不想费神去命名这个函数的场合。通常情况下,这样的函数只使用一次。兰姆达lambda表达式与C#的兰姆达lambda表达式基本上一致,只是在语法上有所变化(C#使用"=>",python使用lambda关键字)
2025-04-12 15:27:16
604
原创 Python进阶(2):函数
在调用函数时,指定的实际参数的数量必须与形式参数的数量一致,否则将抛出 TypeError 异常,提示缺少必要的位置参数。在调用函数时,指定的实际参数的位置必须与形式参数的位置一致,否则将产生以下两种结果。
2025-04-10 19:53:04
883
原创 Python进阶(1):正则表达式
在实现时,可以使用re模块提供的方法(如 search()、match()、findall()等进行字符串处理,也可以先使用re 模块的 compile()方法将模式字符串转换为正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串。search()方法用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回 Match对象,否则返回 None。如果匹配成功,则返回包含匹配结构的列表,否则返回空列表。count:可选参数,表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配。
2025-04-10 09:44:45
1120
原创 Python入门(9):Python字符串
count()count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回否则返回出现的次数。find()该方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该子字符串时的索引。rfind()[从右往左查找]该方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该子字符串时的索引。index()index()方法与find()方法类似,也是用于检索是否包含指定的子字符串。只不过
2025-04-08 11:18:48
730
原创 Python入门(8):Python序列结构-集合
集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用“&”符号;进行并集运算时使用“|”符号:进行差集运算时使用“-”符号,进行对称差集运算时使用“^”符号。交集:获取两个集合的相同元素并集:合并两个集合,重复元素的只保留一个差集A-B:集合A中的元素,删除掉在B中的元素差集B-A:集合B中的元素,删除掉在A中的元素对称差集:并集集合中移除所有重复元素[并集-交集]
2025-04-03 16:48:24
278
原创 Python入门(7):Python序列结构-字典
定义字典时,每个元素都包含两个部分"键”和“值”,并且在“键”和“值”之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一个大括号“{}”中。使用del命令来删除字典。
2025-04-01 23:56:24
556
原创 Python入门(6):Python序列结构-元组
对于已经创建的元组,不再使用时,可以使用 del语句将其删除元组是不可变序列,所以我们不能对它的单个元素值进行修改,但是元组也不是完全不能修改。我们可以对元组进行重新赋值。在进行元组连接时,连接的内容必须都是元组。不能将元组和字符串或者列表进行连接。在进行元组连接时,如果要连接的元组只有一个元素,一定不要忘记后面的逗号元组推导式print("返回生成器对象:",randomNumber)
2025-04-01 16:21:50
408
原创 Python入门(5):Python序列结构-列表
切片类似于C#中的结构ArraySegment[部分数组]使用列表对象的 remove()方法删除元素时,如果指定的元素不存在,将出现不存在该元素异常,将其优化为先判断。
2025-03-11 14:01:52
996
原创 Python入门(4):Python流程控制
python和C++一样,if 表达式只要为True,非零,非空,都是有效的语法执行,在判断if条件时,C#做的非常好 ,C#中必须 if(bool类型表达式) ,不能出现 if (1) 的情况,而在python中 if 1 if(a=1) if(a==1)都是有效语法.如果表达式的值为假,就跳过“语句块”,继续执行后面的语句,这种形式的if语句相当于汉语里的“如果……end:用于指定计数的结束值(但不包括该值,如range(7),则得到的值为 0~6,不包括 7),不能省略。
2025-03-08 11:09:32
848
原创 Python入门(3):Python运算符与表达式
Python 中的位运算符有按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)运算符。Python 的运算符的运算规则是:优先级高的运算先执行,优先级低的运算后执行,同一优先级的操作按照从左到右的顺序进行。使用时,可以直接把基本赋值运算符“=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给左边的变量。所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的“先乘除,后加减”是一个道理。比较运算符,也称为关系运算符。
2025-03-05 11:33:28
328
原创 Python入门(2):Python数据类型与转换
Python 是动态类型的语言(也称为弱类型语言),不需要像 Java 或者 C语言一样在使用变量前必须先声明变量的类型。虽然 Python 不需要先声明变量的类型,但有时仍然需要用到类型转换。
2025-03-04 19:22:28
239
原创 Python入门(1):Python语言基础
Python简介Python 是一种跨平台的、开源的、免费的、解释型的高级编程语言。近几年发展势头迅猛,在2018年3月的TIOBE编程语言排行榜中已经晋升到第4名,而在IEEE Spectrum 发布的 2017 年度编程语言排行榜中,Python 位居第一。另外,Python的应用领域非常广泛,如 Web 编程、图形处理、黑客编程、大数据处理、网络爬虫和科学计算等,Python 都可以实现。Python区分大小写Python功能。
2025-03-04 16:35:09
829
原创 使用Pycharm创建第一个Python程序
在C#、Java、C++等语言的语法中规定,必须以分号作为语句结束的标识。Python也支持分号,同样用于一条语句的结束标识。但在Python中分号的作用已经不像C、Java中那么重要了,Python中的分号可以省略,主要通过换行来识别语句的结束。Pycharm集成开发工具[IDE]
2025-03-01 11:59:44
436
原创 C#使用文件读写操作实现仙剑五前传称号存档修改
手把手教学仙剑五前传 称号存档修改器首先找到 Pal5Q所在目录的save\global.sav 文件,这是一个只有488字节的文件,这里存放称号对应的编号ID,以及是否已获得该称号,1为已获取称号,0为未获取称号[称号:是否获取]这是一个键值对称号的编号ID是一个Int32数字,使用C#的方法BitConverter.GetBytes(编号ID)即可获取4个字节是否获取也是一个Int32数字,称号描述在一个明文的xml文件[title.xml]中 路径为 \Config\Data\title.
2025-02-15 15:18:22
660
原创 C#快速排序QuickSort将递归算法修改为堆栈Stack非递归方式
实现方法:我们可以发现:对于递归Recursive代码更新为堆栈Stack循环代码,仅需三个步骤即可实现:①将所有参数封装为元组Tuple或者一个自定义类如递归方法void QuickSortRecursive(int[] arr, int left, int right)就定义一个元组 Tuple<int[], int, int> 作为整体元素[参数集合]传递②定义一个泛型Stack,每个元素都是一个元组③将原来的使用递归方法调用自身的使用修改为推入堆栈中[Push]
2025-02-10 16:15:21
381
原创 C#树图显示目录下所有文件以及文件大小(使用Stack元组来替换递归)
C#树图显示目录下所有文件以及文件大小(使用Stack元组来替换递归)思路:我们注意到递归段 BindTreeView(treeNode.Nodes, directories[i]); 两个递归参数(TreeNodeCollection nodes, string directoryPath) 都需要传入新的递归参数因此,将递归更新为Stack时,两个参数需要同时传递(即成对传递),我们可以使用元组Tuple来同时传递.
2025-02-10 13:47:24
382
原创 C#中深度解析BinaryFormatter序列化生成的二进制文件
如果将二进制文件读取出来,然后篡改指定的字节码,生成新的二进制文件,然后重新读取,结果就会发现数据被篡改了.很多单机游戏的存档文件修改就是这么干的.这也是不提倡使用BinaryFormatter类进行序列化的原因,可能被劫持篡改二进制文件,因此在最新的net 5.0中会被标记为不安全的和过时的原因。
2025-02-08 17:36:56
600
原创 C#树图显示目录下所有文件以及文件大小
而一个目录(文件夹)System.IO.Directory是没有FileSize或者Length属性的.目录(文件夹)的大小是指该目录下所有子目录和所有文件大小的累加,按字节为单位.我们在打开某个目录属性时,可以查看到有大小信息.如下图。C#树图显示目录下所有文件以及文件大小。
2025-01-21 18:11:32
472
原创 C#使用WMI获取控制面板中安装的所有程序列表
WMI全称Windows Management Instrumentation,Windows Management Instrumentation是Windows中用于提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。如果此服务被终止,多数基于 Windows 的软件将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。WMI提供公用接口及对象模型,以存取有关操作系统、装置、应用程序及服务的管理信息。
2025-01-20 17:50:59
510
原创 C#中颜色的秘密
颜色Color是一个调色板,所有颜色都是由透明度Alpha,红Red,绿Green,蓝Blue按不同比例调色混合而成,如果不考虑透明度Alpha,颜色共有256*256*256=16777216种Color=ARGBA,R,G,B都为byte型[8位],因此可以用整体的32个整数[Int32]来表示一种颜色
2025-01-14 09:51:57
780
原创 C#使用OpenTK绘制3D可拖动旋转图形三棱锥
【代码】C#使用OpenTK绘制3D可拖动旋转图形三棱锥。我们绘制一个三棱锥,三棱锥需要四个顶点Vertex
2025-01-11 16:26:21
842
原创 C#使用OpenTK绘制一个着色矩形
OpenGL 是一种跨平台的图形渲染 API,用于创建 2D 和 3D 图形。OpenTK的目标是提供一个一致且高效的框架,让开发者能够专注于构建他们的游戏和图形应用程序,而无需担心底层硬件和操作系统之间的差异。因此,可以说 OpenTK 是 OpenGL 的一个封装库,它封装了 OpenGL 的底层实现,提供了更加易用的 C# 接口。总的来说,OpenTK是一个功能强大的跨平台游戏开发库,为C#开发者提供了便捷的开发接口和工具,使得开发者能够更加专注于游戏和图形应用程序的构建,提高了开发效率和便捷性。
2025-01-11 15:17:00
961
原创 C#使用MVC框架创建WebApi服务接口
它定义了在管道中使用中间件来处理请求和相关响应的标准方法。WebAPI应用程序和中间件可以与基于 OWIN 的应用程序、服务器和中间件进行互操作。使用 Topshelf 可以非常方便的将一个 C# 控制台程序部署成为一个 Windows Service, 使用它可以很方便的构建跨平台服务寄主,而在调试时直接以控制台的形式运行即可,非常方便。Topshelf 是一个开源的跨平台的宿主服务框架,支持 Windows 和 Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。
2025-01-07 16:49:08
1494
原创 使用DataGridView来实现的工步跳转
新建窗体应用程序ShowImageColumnDemo,将默认的Form1修改为FormShowImageColumn。工步跳转与绑定
2024-12-31 15:32:49
318
2
原创 打印自然常数E
自然常数,符号e,为数学中一个常数,是一个无限不循环小数,且为超越数,其值约为2.718281828459045。它是自然对数函数的底数。
2024-10-16 11:41:08
488
1
原创 C#使用TCP-S7协议读写西门子PLC(四)
这里我们进行读写基础数据类型、读取DB块的字符串、宽字符串、以及一系列连续数组。新建部分类文件SiemensS7ProtocolUtil.Integrated.cs主要方法读取任意连续字节数据,任意多个Byte读取--每次最多读取200个字节,如果超过200,自动分多次读取public OperateResult ReadSerialData(PlcRegisterCategory plcRegisterCategory, ushort offsetAddress, ushort
2024-09-11 19:22:02
1897
原创 C#使用TCP-S7协议读写西门子PLC(三)
这里我们进行封装读写西门子PLC的S7协议命令以及连接西门子PLC并两次握手新建部分类文件SiemensS7ProtocolUtil.ReadWrite.cs主要方法:连接西门子PLC并发送两次握手。两次握手成功后,才真正连接到PLCpublic OperateResult ConnectPlcAndHandshake(SiemensPlcCategory siemensPlcCategory, IPEndPoint endPoint, int timeout = 3000)生成一个写入字节数据
2024-09-11 18:48:10
2252
原创 C#使用TCP-S7协议读写西门子PLC(二)
这里,我们开始进行读写西门子PLC,西门子PLC作为Socket通信的服务端【TCP-Server】在读写PLC之前,我们先进行Socket-Client程序编写,用于连接TCP服务端【也就是西门子PLC】,为了方便进行,我们使用部分类partial的方式【当然使用父子继承类亦可】,新建类文件SiemensS7ProtocolUtil.csSiemensS7ProtocolUtil类是部分类,需使用关键字partial
2024-09-11 17:36:23
1337
原创 C#使用TCP-S7协议读写西门子PLC(一)
西门子PLC的S7协议是西门子公司在ModbusTcp协议的基础上自定义的一种协议,仅支持西门子PLC,S7协议本质仍然属于TCP协议的一种自定义具体实现
2024-09-10 15:38:33
1319
原创 C#使用MQTT(二):MQTT客户端
为了一个应用程序可以作为客户端和服务端,我们在Program.cs增加切换开关。文件FormMqttClient.Designer.cs。窗体FormMqttClient程序代码如下:客户端程序。新建Windows窗体FormMqttClient。窗体FormMqttClient设计器相关代码如下。文件FormMqttClient.cs。选择作为MQTT服务端和MQTT客户端。上一篇我们初步设计了MQTT服务端。这里我们设计客户端,接上一篇。运行客户端与服务端通信。
2024-09-04 16:57:45
2614
3
原创 C#使用MQTT(一):MQTT服务端
的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。我们使用MQTTnet.dll,程序集 MQTTnet, Version=4.3.6.1152。低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息。它工作在 TCP/IP协议族上,是为。管理Nuget包,输入关键字Mqtt。
2024-09-04 16:05:09
5268
1
原创 C#使用GDI对一个图像Image进行任意角度旋转
新建winform应用程序RotatedRectangleDemo,将默认的Form1重命名为FormRotatedImage。文件 FormRotatedImage.Designer.cs。文件FormRotatedImage.cs。基于上篇的基础上,对图片进行任意角度旋转。找一下测试图片 云无月.jpg。上一篇我们对矩形进行旋转。
2024-08-14 12:14:42
668
1
原创 区域与语言CultureInfo
这些信息包括区域性的名称、书写系统、使用的日历、字符串的排序顺序以及对日期和数字的格式化设置。使用LCID是为了标识不同地区和语言的代码。它是Locale Identifier(区域设置标识符)的缩写,用于表示不同地区和语言的组合。语言ID是指一种语言,而子语言ID指的是地区或区域设置。在Windows操作系统中,LCID被广泛用于识别和设置地区设置,如日期和时间格式、货币单位、数字格式、键盘布局等。LCID,全称 Locale Identifier,区域设置标识符,用于确定特定地区和语言的区域设置。
2024-08-09 16:27:30
519
原创 Profinet与以太网Ethernet的区别
PLC可编程逻辑控制器 基本上都是应用于工业,采用的通讯基本上都是profinet而各种网络通讯,比如浏览网页,视频,各种网络游戏,都是采用Ethernet通信综上所述,Profinet和以太网在技术规范、应用领域、通信速度和实时性、系统兼容性和互操作性以及数据处理和网络管理等方面存在显著差异。在选择网络通信技术时,需要根据具体的应用场景和需求进行选择。对于工业自动化领域来说,Profinet以其高度的实时性、兼容性和数据处理能力成为了一种理想的选择。
2024-07-24 17:09:48
3022
原创 解析西门子PLC的String和WString
西门子PLC有两种字符串类型,String与WStringString 用于存放英文数字标点符号等ASCII字符,每个字符占用一个字节WString宽字符串用于存放中文、英文、数字等Unicode字符,每个字符占用两个字节WString[50]为例:西门子PLC字符串类型 WString[50],占用104个字节(偏移量),第一第二个字节是最大长度,就是50,第三第四个字节是实际长度10,第五个字节之后就是Unicode码,PLC解析逻辑为找到第三第四个字节的长度actualLength,然后查找
2024-07-24 15:56:19
5631
Base64ConsoleDemo.rar
2021-12-11
Base64EncoderDemo.rar
2021-12-10
TextEditorDemo.zip
2021-01-31
CommonFormDesignerDemo.rar
2021-05-09
AutoGenerateFormExtern.rar
2021-05-08
AutoGenerateForm.rar
2021-04-27
BatchUnlockResFileDemo.rar
2021-04-16
SaveDefaultXmlConfigDemo.rar
2022-06-29
C#使用GDI绘制九宫格
2022-05-24
九宫格与EightDiagram的画图GDI
2022-05-16
西西弗斯黑洞【123数字黑洞】 卡普雷卡尔黑洞(重排求差黑洞):三位数黑洞495
2022-05-04
FixedDemo C# fixed
2022-04-04
使用循环【迭代】来进行转化数字为中文
2022-03-25
NumberToChineseDemo
2022-03-24
根据运算符的优先级,依次添加到堆栈中 /// 最终返回的列表不存在左右小括号,只有数字 以及 加减乘除运算符
2022-03-21
AutoSaveTreeNodeDataDemo
2022-03-04
C#常见位操作 与或非 BitOperation
2022-03-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人