C#使用GDI对一个图像Image进行任意角度旋转
C#使用GDI对一个图像Image进行任意角度旋转
使用GDI画图片生成合成图片并调用打印机进行图片打印
使用GDI画图片生成合成图片并调用打印机进行图片打印
使用netdxf(C#)框架实现dxf文件读取与导出坐标
使用netdxf(C#)框架实现dxf文件读取与导出坐标
C#使用随机数模拟英雄联盟S13瑞士轮比赛
C#使用随机数模拟英雄联盟S13瑞士轮比赛
SaveDefaultXmlConfigDemo.rar
C#读写应用程序配置文件App.exe.config,本质是xml文件的读写。
我们将配置文件的AppSettings节点和ConnectionStrings节点内容自动绑定到分组框控件GroupBox中,同时可以批量保存。
C#使用GDI绘制九宫格
C#使用GDI绘制九宫格
DrawDiagramUtil.GenerateEightDiagramSymbol(panel8, "坎一", 2, Color.Green);
DrawDiagramUtil.GenerateEightDiagramSymbol(panel3, "坤二", 0, Color.Red);
DrawDiagramUtil.GenerateEightDiagramSymbol(panel4, "震三", 1, Color.Red);
DrawDiagramUtil.GenerateEightDiagramSymbol(panel1, "巽四", 6, Color.Yellow);
DrawDiagramUtil.GenerateFiveCenter(panel5, "中宫五");
DrawDiagramUtil.GenerateEightDiagramSymbol(panel9, "乾六", 7, Color.Green);
九宫格与EightDiagram的画图GDI
九宫与方位
DrawDiagramUtil.GenerateEightDiagramSymbol(panel8, "坎一", 2, Color.Green);
DrawDiagramUtil.GenerateEightDiagramSymbol(panel3, "坤二", 0, Color.Red);
DrawDiagramUtil.GenerateEightDiagramSymbol(panel4, "震三", 1, Color.Red);
DrawDiagramUtil.GenerateEightDiagramSymbol(panel1, "巽四", 6, Color.Yellow);
DrawDiagramUtil.GenerateFiveCenter(panel5, "中宫五");
DrawDiagramUtil.GenerateEightDiagramSymbol(panel9, "乾六", 7, Color.Green);
西西弗斯黑洞【123数字黑洞】
卡普雷卡尔黑洞(重排求差黑洞):三位数黑洞495
西西弗斯黑洞【123数字黑洞】
/// 设定一个任意数字串,数出这个数中的偶数个数,奇数个数,及这个数中所包含的所有位数的总数
/// 比如86420135799,按照偶数个数5,奇数个数6,数字总个数11,拼接成一个新的整数 5611
/// 然后依次转化为134,然后转化为123结束
卡普雷卡尔黑洞(重排求差黑洞):三位数黑洞495
/// 三个0~9之间的数字【不能完全相同】组成的三位数的最大值 减去 最小值,获取一个【差值】新三位数(不够就补0)
/// 对三位数继续计算最大值 和 最小值,最终差值(终结黑洞值)为495
FixedDemo C# fixed
使用fixed指针修改内存的值,不能使用fixed关键字获取结构的地址,
坐标,fixed关键字不能获取已固定的表达式的地址
/// 因此fixed不能获取结构struct的地址
使用循环【迭代】来进行转化数字为中文
/// <summary>
/// 对【0000~9999】之间的数字进行迭代解析成中文
/// 类似于除基取余法
/// </summary>
/// <param name="multiple">倍率</param>
/// <param name="number">需要解析的数字</param>
/// <returns></returns>
private static string GetChinese(int multiple, int number)
{
if (number == 0)
{
return ChineseCollection[0].ToString();
}
string chinese = string.Empty;
int quotient = 0;//商
NumberToChineseDemo
/// <summary>
/// 数字与中文描述转化示例
/// </summary>
public class NumberChineseTranslateUtil
{
/// <summary>
/// 中文字符描述集合
/// 十索引为10
/// 百索引为11
/// 千索引为12
/// 万索引为13
/// 亿索引为14
/// </summary>
static readonly char[] ChineseCollection = new char[] { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九',
'十','百','千','万','亿' };
/// <summary>
/// 数字转中文
/// 按照【个、十、百、千、万、亿】
/// 只考虑正整数和
根据运算符的优先级,依次添加到堆栈中
/// 最终返回的列表不存在左右小括号,只有数字 以及 加减乘除运算符
StackCalculateUtil
RecursionCalculateUtil
使用递归,计算含有小括号,加减乘除的表达式
/// 1.查找小括号,然后依次消去所有的小括号,此时表达式没有小括号
/// 2.进行乘除运算
/// 3.最后进行加减运算
C#常见位操作 与或非 BitOperation
Console.WriteLine($"与(&)操作符的位都为1时,才为1,其他都为0,因此与(&)操作符的结果范围在[0, Math.Min(x,y)],x,y均为正整数");
Console.WriteLine($"或(|)操作符的位都为0时,才为0,其他都为1,因此或(|)操作符的结果范围在[Math.Max(x,y), x+y],x,y均为正整数");
Console.WriteLine($"非(~)操作符按位取反,1转化为0, 0转化为1,因此非(~)操作符满足[x+~x=-1]一个数与其取反操作之和为-1");
Console.WriteLine($"异或(^)操作符的位不同时为1, 位相同时为0");
Console.WriteLine($"左移(<<)操作符:【最左侧位不要,在最右侧补0】,相当于乘以2个N次方,【移位是除以32后的余数,范围[0,31],即以32为一个周期】");
Console.WriteLine($"右移(>>)操作符:【最右侧位
AutoSaveTreeNodeDataDemo
private void tvMesInterface_AfterSelect(object sender, TreeViewEventArgs e)
{
ReadConfig(e.Node.Text);
//记录选中的节点
LastSelectedNode = e.Node;
}
/// <summary>
/// 内部成员变量标记,确保BeforeSelect事件不会多次触发
/// </summary>
bool inside = false;
private void tvMesInterface_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if (!inside)
{
inside = true;
Base64ConsoleDemo.rar
Console.WriteLine($"比较 手动转化 与 调用系统函数转化 Base64结果:【{base64Custom == base64Auto}】");
Console.WriteLine($"比较 手动还原 与 调用系统函数还原 Base64结果:【{srcCustom == srcAuto}】");
Base64EncoderDemo.rar
Base64属于简单加密算法的一种。类似于凯撒密码【它是一种替换加密的技术】
Base64字符串由65个字符组成,
大写字母A~Z,
小写字母a~z,
数字0~9,以及三个特殊字符+、/、=
【=“等号”用于补充字符,使Base64字符串长度变成4的倍数】
OmronFinsDemo.rar
OmronFins TCP通信,使用C#
BIndDataDemo.zip
DataGridView数据绑定 刷新,多行数据
InovancePlcDemo.rar
汇川PLC的Modbus测试Demo
modbus协议报文分析_汇川PLC.docx
Modebus报文详解 0x03 读取多个类型寄存器 0x10写多个连续寄存器
DeviceStatusDemo.rar
设备状态监控DeviceStatusDemo,
保存到本地sqlite数据库中
CommonFormDesignerDemo.rar
统一列表界面和编辑界面,只使用两个界面即可实现 增删改查 某个表单
DataGridViewConf_Form.xls
AutoGenerateUtil.cs
NpoiExcelOperateUtil.cs
AutoGenerateFormExtern.rar
自动生成CRUD,表单相关代码
DataGridViewConf_Form.xls
sh_db.sql
AutoGenerateUtil.cs
AutoGenerateForm.rar
自动生成实体类工具
sb.AppendLine($@" /// <summary>
/// {columnComment}
/// </summary>{attributeMessage}
public {dataType} {columnName} {{ get; set; }}");
BatchUnlockResFileDemo.rar
批量解除资源文件的锁定
使用CMD命令
参考文档:
https://docs.microsoft.com/zh-cn/sysinternals/downloads/streams
需要下载 [Streams\\streams64.exe]文件
-d 针对文件或文件夹执行
-s -d 可以递归执行文件夹下的子文件\子文件夹
TextEditorDemo.zip
ICSharpCode.TextEditor是一种开源的代码与文本编辑器。TextEditor(和SharpDevelop一样)经常使用策略模式。法高亮通常是由一个DefaultHighlightingStrategy类的实例
FibonacciSequenceDemo.rar
现在使用四种方式:
一、递归
二、For循环【使用临时变量】
三、For循环【无临时变量】
四、使用数组作为临时仓库
测试四种算法的性能。以及计算出从第几项开始,超过Int32的最大值
新建控制台应用程序FibonacciSequenceDemo
TestServer_SuperSocket.rar
appServer.Setup(serverConfig)
appServer.Start()
//客户端连接事件
appServer.NewSessionConnected += AppServer_NewSessionConnected;
//接收事件
appServer.NewRequestReceived += AppServer_NewRequestReceived;
//客户端已关闭事件
appServer.SessionClosed += AppServer_S
线程安全集合类Concurrent测试
Task task = BlockingCollectionUtil.AddTakeBlockingCollectionAsync();
Task.WaitAny(task);
BlockingCollectionUtil.TryTakeBlockingCollection();
ConcurrentBagUtil.Test();
ConcurrentDictionaryUtil.Test();
ConcurrentQueueUtil.Test();
C#教程20201015.pdf
C#完全基本教程,关键字,条件跳转,迭代,泛型,反射,多线程,异步方法
if,else,for,partial
class,enum,struct,interface,delegate