C#
文章平均质量分 54
关于C#方面的总结
Kevin_Sun777
在读研究生一名,从事机器视觉方向研究,主要利用Halcon联合C#进行编程
展开
-
Halcon中HObject图像转Bitmap
最近做项目有用到Halcon图像转成Bitmap格式的情况,在网上搜索部分代码整理调试了一下,效果不错,在博客中记录一下。1、灰度图转Bitmap //灰度图HObject转Bitmap [DllImport("kernel32.dll")] public static extern void CopyMemory(int Destination, int add, int Length); private Bitmap HObject原创 2021-12-24 18:07:12 · 4920 阅读 · 1 评论 -
C#之计算程序运行耗时的方法
C#之计算程序运行耗时的方法方式1 利用System.DateTime.Now示例代码: static void Main(string[] args) { DateTime dt1 = DateTime.Now; int sum = 0; for (int i = 0; i < 1000; i++) { sum += 1;原创 2021-04-07 09:45:27 · 3465 阅读 · 0 评论 -
C#线程传参的方法总结
C#线程传参的方法总结线程传参的几种方式:方式1 委托使用线程自带的委托传参,示例如下: static void Main(string[] args) { string str = "你好"; Thread th = new Thread(OnThread); th.Start(str); Console.Read(); } st原创 2021-04-04 11:38:43 · 6570 阅读 · 1 评论 -
C#设计模式之单例模式
C#设计模式之单例模式定义:一个类只有一个实例,且该类能自行创建这个实例的一种模式。(也就是一个类只能实例化一次)特点: 单例类只有一个实例对象; 单例对象必须由单例类自行创建; 单例类对外提供一个访问该单例的全局访问点。 优点:以保证内存里只有一个实例,减少了内存的开销; 避免对资源的多重占用; 设置全局访问点,可以优化和共享资源的访问。缺点:一般没有接口,扩展困难; 在调试过程中,如果单例中的代码没有执行完,也不能模拟生成一个新的对象; 功能代原创 2021-03-21 17:25:23 · 3712 阅读 · 0 评论 -
C#基础之接口的学习
C#基础之接口的学习1、定义接口为不同应用的实现提供了一种规范和约束,只要每个应用都遵守这种规范和约束,整个系统就可以得到有效的组织,从而为应用系统的低代价开发提供有效的途径。接口使用interface 关键字进行定义,可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法。接口声明: interface ISample { void Sample(int x原创 2021-02-21 18:16:35 · 385 阅读 · 0 评论 -
C#基础之抽象类的学习
C#基础之抽象类的学习1、定义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。2、特点 不能被实例化,主要用于继承 可以包含两种抽象成员,分别是抽象属性和抽象方法,同时可以包含其他非抽象成员 如果继承抽象类,则需实现抽象类的抽象属性和方法 不能使用Sealed关键字修饰抽象类,因为Sealed意味着类无法被继承,同时Static也不能修饰抽象类 总之,抽象类是用来继承的,而继承后的子类必须按原创 2021-02-20 16:51:25 · 481 阅读 · 0 评论 -
C#之在PictureBox上绘制动态矩形框
C#之在PictureBox上绘制动态矩形框多次做项目都用到了画ROI区域,简单来说就是在PictureBox上画矩形区域,特写此博文以方便日后查阅。在PictureBox上画矩形主要利用了以下几个事件:1、MouseDown事件 Point start; //起始点 Point end; //结束点 bool blnDraw; //在MouseMove事件中判断是否绘制矩形框 private void picture原创 2021-01-13 12:15:26 · 7921 阅读 · 0 评论 -
C#之如何把子窗体嵌入到主窗体中显示
C#之如何把子窗体嵌入到主窗体中显示今天总结一下把子窗体嵌入到主窗体中显示的方法。当你点击一个Button显示子窗体时,往往子窗体都是单独弹出,而如果想要子窗体直接在主窗体上显示,这就需要将子窗体嵌入到主窗体中,方法如下: //在主窗体中实例化要显示的子窗体 private ChildForm cForm; public MainForm() { InitializeComponent();原创 2020-11-27 14:22:22 · 5232 阅读 · 3 评论 -
C#之利用委托和事件实现参数传递
C#之利用委托和事件实现参数传递关于委托和事件的个人理解就是,委托就是快递员,事件就是信纸,事件里的程序就是信的内容。其实现过程就是,快递员邮递写好的信,即事件通过委托向外传递,至于向哪传递,那就要看哪里注册了这个事件。在编写C#程序时需要用到委托和事件来传递一些参数,这里就简单总结一下委托和事件传参的简单使用:假设:在一个窗体中创建了一个用户控件uc1,需要把uc1中的某个int类型的参数传递给主窗体并在textBox中显示用户控件uc1://声明一个委托public delegate原创 2020-11-16 21:06:34 · 6068 阅读 · 0 评论 -
C#之Convert.ToInt32()和int.Parse()的区别
C#之Convert.ToInt32()和int.Parse()的区别1、Convert.ToInt32()是将继承于object类的对象转换成int;int.Parse()只能将String类的对象转换成int,即括号中的数据类型只能是String类型2、对NULL值得处理:Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常3、当括号中得数据类型为double型时:(1)Convert.ToInt32(double val原创 2020-11-09 19:54:21 · 2665 阅读 · 0 评论 -
C#之自动保存和读取数据
C#之自动保存和读取数据在做机器人抓取项目时,根据“九点标定”法获得了一组建立机器坐标和相机坐标转换关系的数据,在机器人和相机位姿不改变的前提下,如果不将这组数据保存,则每次打开操作界面都需要重新进行标定。为了避免重复操作,需要将数据自动保存,且在下次抓取时自动读取。解决方法如下:文件保存方法: /// <summary> /// /// </summary> /// <param name="nam原创 2020-10-29 19:52:28 · 5068 阅读 · 3 评论 -
C#之如何调整控件的Dock顺序
C#之如何调整控件的Dock顺序在C#Winform窗体中控件Dock后的顺序是根据添加控件顺序进行优先级排列的。假设在Panel容器中按顺序添加A、B、C三个Button按钮并且将他们的Dock方式设为top,其Dock后的排列顺序应是这样的:---------------------A---------------------B---------------------C----------------------这时需要添加第四个Button按钮并且想将它放在B和C原创 2020-10-26 18:45:13 · 3512 阅读 · 0 评论 -
C#之调用海康工业相机SDK采集图像并在Halcon窗口中显示
C#之调用海康工业相机SDK采集图像并在Halcon窗口中显示最近做项目需要对海康相机进行二次开发,现将所学进行整理。开发环境 VS2012+C#(32位) Halcon12引用动态链接库引用Halcon动态链接库(halcondotnet.dll)引用海康相机动态链接库(MvCameraControl.Net.dll)这个文件在MVS安装目录下MVS\Development\DotNet中,如果你是32位的开发环境就选择win32文件夹下的,如果是64位就选择win64文件夹下...原创 2020-10-22 09:34:44 · 18231 阅读 · 37 评论 -
C#之创建计时器
C#之创建计时器在用C#做项目时多次用到了计时器,现总结一下如何创建计时器。 //实例化一个计时器 Timer _myTimer = new Timer(); private void CreatTimer() { _myTimer.Tick += new EventHandler(OnTimer); _myTimer.Interval = 1000;//设置原创 2020-10-20 08:50:55 · 1489 阅读 · 0 评论 -
C#之关闭子窗体后不释放子窗体对象
C#之关闭子窗体但不释放子窗体对象原创 2020-10-17 10:25:34 · 1105 阅读 · 0 评论 -
C#之敲击回车键触发Button的Click事件
C#之敲击回车键触发Button的Click事件在做项目时,需要在TextBox控件中输入指令,点击Button后将指令传给下位机。为了简化操作,想直接敲击回车键实现Button的Click事件来发送指令,通过查阅资料,实现了这一操作,示例代码如下: private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == '\r')原创 2020-10-16 20:51:13 · 6251 阅读 · 1 评论 -
C#之子窗体与父窗体之间的参数传输
C#之子窗体与父窗体之间的参数传输最近在做项目时涉及到了子窗体与父窗体之间的参数传输问题,通过查阅与学习总结了一种方法。1、子窗体传父窗体Form1为主窗体,Form2为子窗体。实现:在Form1上添加一个button1,点击button1后显示Form2,再点击Form2的button1 在button1_Click事件中通过this.Owner将Form2的textBox2的值设置给Form1的textBox1(也可以将Form2中的某个值传给Form1,然后在Form1进行后续的处理,原创 2020-10-11 13:47:23 · 3364 阅读 · 0 评论 -
C#之winform窗体的最大化、最小化、还原、关闭以及窗体的移动
C#之winform窗体的最大化、最小化、还原、关闭以及窗体的移动在做winform窗体界面美化时,一般都将窗体的FormBorderStyle属性修改为None,之后窗体将会变成一张空白的“白纸”,然后根据自己的需要进行界面的设计。窗体上的关闭、最小化、最大化按钮都需要自己添加,实现其功能的代码如下: //窗体的关闭 private void btnClose_Click(object sender, EventArgs e) {原创 2020-10-07 18:46:59 · 9653 阅读 · 1 评论 -
C#之程序调试方法总结
C#之程序调试方法总结 在写程序过程中,调试程序是必不可少的步骤,现总结几种C#程序的调试方法: (1)设置断点 所谓的断点,就是当程序运行到此处后会自动中断。设置断点的方法又两种: ①单击需要设置断点的行,然后直接按键盘上的F9键; ②直接用鼠标单击需要设置断点的行前面的灰色区域即可。 在设置断点的红色圆圈上右击会出现一个下拉列表,其中:条件 指的是一个布尔类型的表达式,如果满足条件则触发断点;命中次数 如果满足设置的指定次数,则出发断点;筛选器 用于限制原创 2020-10-05 16:22:50 · 9995 阅读 · 0 评论 -
C#之控件ListView的使用(含Halcon参数的转换)
C#之控件ListView的使用(含Halcon参数的转换)在此总结部分有关ListView控件的使用:第一部分: 完成如图所示的ListView控件的具体操作步骤:(1)插入ListView控件后,点击控件右上角的箭头,在下拉列表中将视图选项修改为Details,如图(2)修改完视图选项后接着点击编辑列,在弹出的对话框中添加列数,然后修改每一列的Text,也可修改每一列的宽度,如图: 第二部分 在上述完成的ListView控件里显示数据的有关代码: //Objec原创 2020-09-30 10:28:09 · 587 阅读 · 0 评论 -
C#与Halcon联合编程之如何使Halcon窗口显示的图片适应窗口控件的大小
C#与Halcon联合编程之如何使Halcon窗口显示的图片适应窗口控件的大小在winform窗体中添加一个Halcon窗口控件hWindowControl,要想在控件上显示一张图片往往会出现图片只显示部分,而不能在当前的窗口中完全显示,如下图所示: (左边是在PictureBox控件中显示,右边是在Halcon窗口控件中显示)解决方法如下所示: HTuple hWind;//hWind为窗口句柄原创 2020-09-12 15:54:37 · 7162 阅读 · 6 评论 -
C#关于Picturebox控件显示的图片无法适应控件大小的解决方法
C#关于Picturebox控件显示图片适应控件的大小通过一个Button按钮的Click事件打开文件夹选择一张图片插入到PictueBox中,其代码如下: private void button1_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == DialogResult原创 2020-09-10 15:03:58 · 2655 阅读 · 0 评论 -
C#之ArrayList类
C#之ArrayList类创建一个ArrayList类可以动态的添加和删除元素,构造ArrayList的语法如下:ArrayList List = new ArrayList();//List是ArrayList的对象名ArrayList的常用属性及说明属性说明Capacity获取或设置ArrayList可包含的元素数Count获取ArrayList中实际包含的元素数IsFixedSize获取一个值,该值指示ArrayList是否具有固定大小IsRead原创 2020-08-31 20:47:47 · 1057 阅读 · 0 评论 -
C#之在PictureBox控件上画点
C#之在PictureBox控件上画点如何在PictureBox控件上实现鼠标每左击一次就会画一个点呢?这里总结了两种方法。首先在窗体上插入PictureBox控件和一个Button按钮,当点击按钮后,鼠标进入PictureBox控件中,每左击一次画一个点。第一种方法:利用GDI+,代码如下: private string sType;//用来记录button的Name private void btnDrawPoint_Click(object sender, E原创 2020-08-27 18:12:40 · 6457 阅读 · 0 评论 -
C#winform窗体控件之DataGridView
C#winform窗体控件之DataGridViewDataGridView是一个可以提供强大而灵活的以表格形式显示数据的控件。当我们在窗体中使用表格时会发现,在编辑每一列的列标题后,第一例为空白,如图所示。那如何把第一列的空白给去掉呢?其实,第一列空白为每行的行标题,当我们不需要的时候,右击控件选择属性,找到RowHeadersVisible改为False即可。同样道理,第一行也是每一列的列标题,再不需要显示的时候找到属性中的CoulmnHeadersVisible改为False即可。要想向表原创 2020-08-23 20:31:39 · 4905 阅读 · 1 评论 -
C#winform窗体控件之toolStrip
C#winform窗体控件之toolStrip在做窗体时我们可能需要一个工具栏,那这时最简单的方法就是添加一个toolStrip控件。如何完成一个上图的工具栏呢?首先,需要添加一个toolStrip控件,然后点击控件上的添加按钮,添加你需要的控件,这里我们添加的是Button。添加完成后右击toolStrip控件选择属性,将AutoSize改为False,这时可以随意更改toolStrip的长度和宽度。将toolStrip控件拉宽后,会发现Button上的图像非常小,这时继续更改toolStrip控原创 2020-08-15 15:27:14 · 5581 阅读 · 1 评论 -
C#winform窗体控件之tabControl和flowLayoutPanel
C#winform窗体控件之tabControl和flowLayoutPanel之前在做winform窗体时用到了两个控件tabControl和flowLayoutPanel,并总结了一点内容如下:这是我做出来的tabControl控件,看上去有些难看,字体没有居中,且选项卡都靠左,那如何让字体剧中呢?我总结了两个方法:第一种方法是:右击控件选择属性,找到Padding,修改其中的X会改变选项卡标题的长度(如图一所示),修改Y会改变选型卡标题的高度(如图二所示)。但此时字体还没有居中,这时可以挨个右击原创 2020-08-12 20:30:22 · 2536 阅读 · 0 评论 -
C#部分基础知识整理(类)
C#部分基础知识整理(类)1.方法原创 2020-07-22 20:59:47 · 196 阅读 · 0 评论 -
C#部分基础知识整理(数组)
C#部分基础知识整理(数组)数组是具有相同数据类型的一组数据的结合。数组中的每一个变量称为数组元素,数组能够容纳元素的数量称为数组的长度。常见数组:整型数组,小数数组,字符数组,字符串数组1.一维数组int[] arr;(整形数组) string[] arr;(字符串数组)初始化一维数组int[] arr = new int[3]{1,2};在C#中是不可行的,而在C++中可行...原创 2020-07-22 21:00:00 · 474 阅读 · 0 评论 -
C#部分基础知识整理(语句)
C#部分基础知识整理(语句)1.if语句(1)最简单的if语句if(表达式){语句}表达式为关系表达式或者逻辑表达式程序示例:namespace DemoPractice5{ class Program { static void Main(string[] args) { Console.WriteLin...原创 2020-07-22 21:00:33 · 486 阅读 · 0 评论 -
C#部分基础知识整理(字符)
C#部分基础知识整理(字符)1.字符在C#中字符都是用单引号引来的,使用char/Char类定义,比如char ch1 = ‘m’ ; 切记,单引号中只能是储存一个字符,这种情况是错误的 char ch1 = ‘abc’; (×)转义字符:一种特殊的字符变量,以反斜线“/”开头,后跟一个或多个字符。那如果遇到这种形式(“C:\Window\Program\Tecent\QQ”)应该怎...原创 2020-07-22 21:00:56 · 1258 阅读 · 0 评论 -
C#部分基础知识整理(运算符)
**C#基础知识总结(部分)**初次接触C#,把自己学到的一些基础知识总结一下,方便自己以后可以随时看,也希望能对大家有帮助。由于之前学了一些,但总结的比较简略,所以就不在这里展示了。从现在开始对于我所学到的一些C#知识会进行详细总结。首先介绍一下表达式。表达式等于操作数+运算符(+ - * / %(求余)) 其中操作数可以是常量、变量和表达式1.算数运算符(+ - * / %(求余)...原创 2020-07-22 21:01:11 · 327 阅读 · 0 评论