news 2026/8/5 16:30:50

C# 关于联合编程基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 关于联合编程基础

联合编程


一,setting数据存储方式

1,持久化存储方式:

json格式存储{"age":10} 、

file文件存储方式(File 、StreamReader)

二进制存储方式

csv存储格式 姓名,年龄

张三 , 10

Setting存储方式(ini存储格式)[net]

IP = 127.0.0.1

port=8080

[data]

余伟 =20

xml存储方式

数据库存储方式

内存存储: 数据类型存储方式 数组、字典、集合等


2,,打开页面-->点击Settings.settings

接着在winform中添加如下控件

在存储按钮下写下如下代码:

存储数据

private void button1_Click(object sender, EventArgs e)
{
Settings set = Settings.Default;// 获取配置对象
set.name = textBox1.Text; // 给setting配置表中对应属性进行赋值
set.age = int.Parse( textBox2.Text);
set.weight = float.Parse( textBox3.Text);
set.sex = bool.Parse(textBox4.Text);
set.Save();// 保存更改
}

读取数据:

private void button2_Click(object sender, EventArgs e)
{
Settings settings = Settings.Default;
string name = settings.name;// 获取配置表数据
int age = settings.age;
float weight = settings.weight;
bool sex = settings.sex;
richTextBox1.Text = name+"\n"+age+"\n"+weight+"\n"+sex;

}


二,ini文件存储和读取

1,先在桌面创建一个txt文档,后缀名改为ini格式,编码改成ANSI格式

2,在winform界面设置如下控件

3,在读取按钮下写如下代码

private void button1_Click(object sender, EventArgs e)
{

//1 获取所有的节点名称
//string[] s1 = IniAPI.INIGetAllSectionNames(@"C:\Users\Administrator\Desktop\3.ini");
//foreach (string item in s1)
//{
// richTextBox1.Text += item + "\n";
//}

//2 获取所有的items
//string[] s1 = IniAPI.INIGetAllItems(@"C:\Users\Administrator\Desktop\3.ini","net");
//foreach (string item in s1)
//{
// richTextBox1.Text += item + "\n";
//}

//3 获取对应节点的键的值 (重要)
string s1 = IniAPI.INIGetStringValue(@"C:\Users\Administrator\Desktop\3.ini", "data","花生","");
// richTextBox1.Text += s1 + "\n";

// 4 获取对应节点的键的值(整型)
int a1 = IniAPI.GetPrivateProfileInt(@"C:\Users\Administrator\Desktop\3.ini", "data", "红豆", 0);
richTextBox1.Text += a1 + "\n";
}

4,在写入按钮下写如下代码

private void button2_Click(object sender, EventArgs e)
{
//1 写入指定节点指定的键 (重点)
IniAPI.INIWriteValue(@"C:\Users\Administrator\Desktop\3.ini", "data", "黄豆", "10");


//2 删除节点
//IniAPI.INIDeleteSection(@"C:\Users\Administrator\Desktop\3.ini", "data");

//3 删除键
//IniAPI.INIDeleteKey(@"C:\Users\Administrator\Desktop\3.ini", "net", "port");

}


三,图片的读写操作

1,使用CogImageFileTool 进行读取图片

2,cogRecordDisplay1 展示记录的 也可以展示图片

3,在winform添加如下控件

在按钮1下输入:

private void button1_Click(object sender, EventArgs e)
{
//1 创建CogImageFileTool工具
CogImageFileTool fileTool = new CogImageFileTool();
OpenFileDialog dia = new OpenFileDialog(); // 文件对话框
dia.Filter = "All Image Files| *.jpg; *.png; *.jpeg; *.ico; *.tif; *.tiff; *.idb; *.bmp";
dia.Title = "请选择文件";
if (dia.ShowDialog()==DialogResult.OK)
{
// 可以获取选择文件路径
// fileTool.Operator.Open 打开fileTool工具
//参数1 路径
//参数2 读取fileTool工具
//2 使用fileTool工具读取图片
fileTool.Operator.Open(dia.FileName,CogImageFileModeConstants.Read);
//3 运行工具
fileTool.Run();

//4 获取输出图 展示
cogRecordDisplay1.Image=fileTool.OutputImage;

//5 自适应大小
cogRecordDisplay1.Fit();


}

在按钮2下输入:

private void button2_Click(object sender, EventArgs e)
{
CogImageFileTool fileTool = new CogImageFileTool();

// 保存控件展示的图片
// 把控件图片赋值给工具的输入图参数中
fileTool.InputImage = cogRecordDisplay1.Image;


// fileTool.Operator.Open 打开fileTool工具
//参数1 路径
//参数2 写入fileTool工具
//2 使用fileTool工具写入图片
fileTool.Operator.Open(@"1.png", CogImageFileModeConstants.Write);
//3 运行工具
fileTool.Run();

//4 获取输出图 展示
// cogRecordDisplay1.Image = fileTool.OutputImage;
//5 自适应大小
//5 自适应大小
//cogRecordDisplay1.Fit();

}

在按钮3下输入:

private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog dia = new OpenFileDialog(); // 文件对话框
dia.Filter = "All Image Files| *.jpg; *.png; *.jpeg; *.ico; *.tif; *.tiff; *.idb; *.bmp";
dia.Title = "请选择文件";
if (dia.ShowDialog() == DialogResult.OK)
{
Bitmap bit = Image.FromFile(dia.FileName) as Bitmap; //读取本地图片转成位图
// CogImage8Grey image = new CogImage8Grey(bit); //转成8位的灰图
CogImage24PlanarColor image = new CogImage24PlanarColor(bit);//把图片转成彩图
cogRecordDisplay1.Image = image; //展示图片
cogRecordDisplay1.Fit();
}


}

在按钮4下输入:

//使用位图进行写入保存
private void button4_Click(object sender, EventArgs e)
{
string path = Directory.GetCurrentDirectory()+"\\data";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
//CreateContentBitmap 创建位图内容
//参数1 Cognex.VisionPro.Display.CogDisplayContentBitmapConstants.Image 仅仅把图片转成位图了
Bitmap map = cogRecordDisplay1.CreateContentBitmap(Cognex.VisionPro.Display.CogDisplayContentBitmapConstants.Image) as Bitmap;
map.Save(path + $"\\{DateTime.Now:yyyyMMddh
hmmss}.png");

}


四, 加载单个PMA工具

1,先在winform界面加入以下控件

2,窗体的加载事件

CogPMAlignTool pma;
private void Form1_Load(object sender, EventArgs e)
{
//加载vpp资源(重点)
pma = CogSerializer.LoadObjectFromFile("模版匹配.vpp") as CogPMAlignTool;
//Subject 属性 ,工具展示内容
cogPMAlignEditV21.Subject = pma;
//MessageBox.Show("加载资源成功");
}

3,在按钮1下写入:

private void button1_Click(object sender, EventArgs e)
{

if (pma==null)
{
MessageBox.Show("加载资源失败");
return;
}
OpenFileDialog dia = new OpenFileDialog(); // 文件对话框
dia.Filter = "All Image Files| *.jpg; *.png; *.jpeg; *.ico; *.tif; *.tiff; *.idb; *.bmp";
dia.Title = "请选择文件";
if (dia.ShowDialog() == DialogResult.OK)
{
Bitmap map = Image.FromFile(dia.FileName) as Bitmap; //加载路径资源
pma.InputImage = new CogImage8Grey(map);//转成8位的灰图,赋值给pma的输入图片

}

}

4,在按钮2写入:

// 运行
private void button2_Click(object sender, EventArgs e)
{
if(pma==null)
{
MessageBox.Show("加载资源失败");
return;
}

pma.Run();// 运行


//展示一条记录
//pma.CreateLastRunRecord() 创建上一次的运行记录
//SubRecords 子记录
cogRecordDisplay1.Record = pma.CreateLastRunRecord().SubRecords[0];
cogRecordDisplay1.Fit();

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/3 9:40:46

智慧农业之辣椒检测目标检测数据集 农产品分拣场景识别 青甜椒与红甜椒自动识别 智能农业设备开发识别 深度学习YOLO格式10460期

辣椒检测目标检测数据集 数据集简介 本数据集专为深度学习目标检测任务设计,适用于辣椒品类识别相关模型的训练与验证,数据标注规范、格式统一,可直接接入主流目标检测训练框架,降低数据预处理成本。 数据集核心信息表 类别数量&…

作者头像 李华
网站建设 2026/8/1 20:08:53

[嵌入式系统-166]:电机类型的演进过程

电机类型的演进过程反映了人类在电气工程、材料科学和控制技术方面的持续进步。从19世纪初的原始电动机到现代高效、智能的电机系统,电机的发展经历了多个关键阶段。以下是电机类型的主要演进过程: 1. 早期探索与原理验证(1820s–1870s&#…

作者头像 李华
网站建设 2026/7/31 10:24:37

Java计算机毕设之基于springboot的游戏分享网站的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/8/1 12:00:30

【课程设计/毕业设计】基于SpringBoot的笔记本电脑维修工单管理系统的设计与实现工单管理、维修管理【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/31 4:07:51

基于SpringBoot+Vue的网络海鲜市场系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着互联网技术的快速发展,电子商务平台已成为现代商业活动的重要组成部分。海鲜市场作为传统行业之一,面临着供应链长、信息不对称、交易效率低等问题。传统线下交易模式难以满足消费者对新鲜海鲜的即时需求,同时也限制了商家的销售渠…

作者头像 李华
网站建设 2026/8/2 6:23:50

GNU Parallel 学习笔记 - 总目录

花了几天的时间,看完了GNU Parallel的PDF版本。 在读GNU Bash的3.2.7 GNU Parallel节时,知道了GNU Parallel。 对于大型任务,无论是大数据量任务,还是云环境下的大量服务器运维,并行都是可资利用的有效手段。因此决定…

作者头像 李华