
C#
shifenglv
一个业余的程序员,爱好是写写代码。
展开
-
批量生成具有多层嵌套结构的文件夹
我有一个表格,表格里是一批文件夹的名称,我要快速、准确、批量地生成一批文件夹。如果自己有耐心的的话,当然可以一个个地建立。如果文件夹只有一层,不存在嵌套现象,那么就很简单了,网上很容易找到方法。如果文件夹很多,而且存在多级子文件夹嵌套其中,那么就很麻烦了。我也没有找到更好的方法,所以就写了一段程序来解决。1、首先,把表格中的文件名称复制到txt文件中,命名格式如下图所示:2、编写程序。...原创 2019-12-13 16:13:21 · 4890 阅读 · 0 评论 -
C#学习笔记:在控件上绘制文字
对于像Label、Button、TextBox等控件,它们本身就具有文本显示功能,显示文字自然不是问题。但是对于PictureBox、Panel等控件,它们不具备文本显示的功能,而我又想让他们显示文字,这就需要多动一些脑筋了。有人会说,如果要在PictureBox上显示文字,直接在PictureBox上放一个Label不就得了吗?当然,这是可以的,而且还挺方便的。但是如果要做一些看起来更酷的文字的话原创 2017-12-22 14:23:10 · 10020 阅读 · 0 评论 -
C#中使用OpenGL:(六)C#中调用C函数时的参数传递问题
C#中调用C函数,除了需要在C#中声明被调函数之外,还要考虑到参数传递的问题。虽然我在之前两篇文章中已经提到过如在C#中向C函数传递参数,但是在调用OpenGL函数时,仍然遇到不少难题,特别是关于指针方面。我试图在网络上搜索相关的方法,然而让人失望是,很多人的给出的是“为什么一定要在C#中使用指针呢?”之类的答案。额……,不是我偏爱指针,如果不是迫不得已,谁会在C#中使用指针呢! 为了解决C#调用O原创 2017-09-26 18:50:13 · 4782 阅读 · 1 评论 -
C#中使用OpenGL:(一)前面的话
为什么要在C#中使用OpenGL?OpenGL是非常强大的图形接口,硬件加速,跨平台。。。。总之,很多说不完的优点。对于喜欢图形编程的人来说,最直接的优点就是OpenGL可以做很多酷酷的东西。正是因为如此,包括我在内,很多人都喜欢使用OpenGL开发图形类的程序。OpenGL缺点也是很明显的,对于程序员来说,最直观的缺点就是学起来难,用起来繁。难学只是暂时的,繁琐则是始终的。OpenGL据说是原创 2017-08-12 20:09:35 · 21153 阅读 · 7 评论 -
C#中使用OpenGL:(二)C#调用C/C++的dll
在C#中使用OpenGL图形库为业余的图形编程人员提供了很大的便利,可是官方并没有向用户提供C#版本的OpenGL图形接口,在民间有好一些人开发了C#版的OpenGL接口,使之能够在C#中使用。这些第三方的C#版OpenGL应该说用起来还是不错的,如果说有什么缺点的话,那应该是这些OpenGL的版本都不是最新的,一般在4.0以下,而现在OpenGL都4.6版本了。如果要使用最新的OpenGL图形接原创 2017-08-15 19:59:47 · 16407 阅读 · 3 评论 -
C#中使用OpenGL:(三)将.lib文件编译为.dll文件
C#不能调用C/C++lib文件的函数,但能调用dll文件的函数。可是现在的情况是,我只有一个lib文件,函数的实现都在里边了。能不能把lib变为dll呢?答案是肯定的。 要把lib编译为dll大概有三种方法吧: 第一种,就是把lib的函数封装一下,然后用编译器编译为dll。具体做法就是,先定义一个函数,然后在函数内部引用lib中的函数,最后将函数输出到dll文件中。 例如:void原创 2017-08-18 17:31:02 · 9958 阅读 · 1 评论 -
C#中使用OpenGL:(四)C#版的OpenGL常量
在使用OpenGL时,经常会用到一些常量,诸如GL_FALSE、GL_BUFFER_BITS之类的。这些常量,在C/C++中,都是在头文件中用宏来声明,编译器在编译时,会把宏替换成实际的数值。如果在C#中使用OpenGL,那么这些常量该如何表示呢?C#不能像C/C++那样通过使用#define来定义宏,那么在C#中如何封装OpenGL几千个常量呢?方法主要有两种,一是用枚举类型(enum)封装原创 2017-08-26 15:58:19 · 9889 阅读 · 4 评论 -
C#中使用OpenGL:(五)1.1版本的OpenGL函数
上一篇文章介绍了如何在C#中表示OpenGL常量,这篇文章将介绍如何在C#中调用1.1版本OpenGL函数。关于OpenGL版本的问题OpenGL自从1992年7月份发布1.0版本以来,到2017年9月已经发展到了4.6版本。在OpenGL发展的历程中有两个版本需要特别注意,第一个是1.1版本,第二个是2.1版本。1.1版本的OpenGL是微软Windows系统所支持的最高版本的了,而原创 2017-09-24 13:16:57 · 6299 阅读 · 0 评论 -
C#中使用OpenGL:(八)OpenGL扩展函数
一般而言,扩展函数指的是没有正式发布但已经存在于显卡驱动中的函数,这里指的是已经正式发布的,但版本号高于1.1的OpenGL函数。前面的文章已经探讨过在C#中使用1.1版本的OpenGL函数,也研究过如何在C#中搭建OpenGL渲染环境。如果对性能没什么要求,也不打算做太复杂的东西,那么前面所做的工作已经够用了。如果想做更酷的东西,那么使用高版本的扩展函数是必不可少的。下面将粗略地说明如何在C#程原创 2018-01-12 21:21:37 · 3305 阅读 · 5 评论 -
C#中使用OpenGL:(七)创建OpenGL渲染环境
之前的文章介绍了如何在C#中调用1.1版本的OpenGL函数,但是光有OpenGL函数还不能绘制图形,就像一个画家,他即使拥有绘画的技巧,还有画笔和颜料,如果没有画布,他也没有地方画画。有了画布,画家还需要画板把画布支起来才能画。OpenGL渲染环境就类似于画布和画板,只有创建了渲染环境,使用OpenGL函数才会起作用。它不是OpenGL的一部分,而是隶属于操作系统,所以不同的操作系统,创建Ope原创 2017-12-19 15:18:57 · 16376 阅读 · 9 评论 -
C#中使用OpenGL:(九)重写C# OpenGL接口
C# OpenGL系列,前面八篇博客在2018年1月份已经完成,基本上是把C# OpenGL接口所涉及的技术大概讲了一下。当时信誓旦旦说要把博客写好,实际上没有做到,有些东西没有讲明白,有些东西是还是错的。另外,博客的行文也不流畅,读起来怪怪的,啰里啰嗦说了很多,但总感觉说不明白。有读者评论说,文章很生动,那真是过奖了。关于源代码的问题,之前的源码上线是很匆忙的,根本没有进行过充分的测试,里面有很...原创 2019-07-28 16:55:48 · 1333 阅读 · 8 评论 -
C#学习笔记:栈溢出异常(StackOverflowException)
最近写了一个C#程序,也就是循环从文件里读取3000多个浮点数到数组中,结果运行程序就报告栈溢出异常(StackOverflowException)。我以为是自己定义了一个很大的局部变量把栈给占满了,检查发现只有几个很小的局部变量,而占用内存大的数组都是用new来分配空间的,按理说空间应该分配在堆区,不应该出现栈溢出。我以为是数据量太大了把堆也给填满了,于是写了一个测试程序,循环读取100000个浮原创 2017-11-03 14:02:17 · 50427 阅读 · 9 评论 -
C#学习笔记:从文件中读取数据
C语言中,可以用fscanf函数从打开的文件中读取一个或多个指定类型的数据。在C#中没有类似于fscanf这种方法,但可以通过一些技巧来达到目的。下面通过例子来说明C#如何实现C语言的fscanf函数的功能。首先,创建一个文本文件。在文件中输入一个整数,一个浮点数,一个字符串。如下图: 接下来要做的是,把文件中的数据分别以整数、浮点数和字符串的形式读进来。如何操作呢?且看下面。//打开文件Fil原创 2017-11-01 16:44:06 · 6786 阅读 · 2 评论 -
C#学习笔记:设置与获取控件的大小
控件的Size属性决定着控件的大小(宽和高),下面将从代码中设置控件的宽和高。假设控件名为control,其宽度为w,高度为h。1.设置控件的大小control.Size=newSize(w,h);//设置控件的宽度为w,高度为h。或者这样:control.Width=w;control.Height=h;2.获取控件的大小 w=control.Width;原创 2017-05-29 13:35:46 · 5858 阅读 · 1 评论 -
C#学习笔记:控件BackColor属性与ForeColor的使用方法
1.解释(1)BackColor属性BackColor属性表示控件的背景颜色,各个颜色颜色分量的取值范围是0-255的整数。(2)ForeColor属性ForeColor属性表示控件的前景色,用于显示文本,也就是说,控件上字体的颜色。对于容器类型的控件,没有直接显示文本的功能,设置前景色可以让其装载的某些控件都获得一个初始的前景色(对于TixtBox控件无效)。例如窗体(F原创 2017-05-29 12:14:35 · 55814 阅读 · 1 评论 -
C#学习笔记:控件的Location属性值的设置与获取
用C#语言设计界面时,常常要设置或者获取控件的位置,这就需要用到Location属性。如果在窗口设计器的属性栏中设置属性值,那么再简单不过了。可是有时候,想要在程序运行时动态设置或获取控件的Location属性值,就要在代码中实现。原创 2017-05-26 19:33:10 · 35252 阅读 · 1 评论 -
C#学习笔记:控件的字体(Font)属性设置
很多控件都有字体(Font)这一项属性,如果在设计器的属性栏中静态设置,自然没问题,可是在代码中,运行时动态设置,就没有那么容易了。考虑到以后会经常用到这一项,研究一下如何设置字体属性还是很有必要的。设置字体主要有两种方法,一种是直接向Font类中传递各种字形字体参数来设置,另一种是运用字体设置对话框(FontDialog)来设置。下面来详细地说说他们的用法。1.方法一,通过Fon原创 2017-05-29 20:48:35 · 74486 阅读 · 0 评论 -
C#学习笔记:RadioButton控件与CheckBox控件的用法
一、用途1.RadioButton控件单选按钮,当与其他单选按钮成对出现时,允许用户从一组选项中选择单个选项。也就是说,当同一个容器中(Form、Panel、GroupBox、PictureBox等)存在两个以上的单选按钮时,只能有一个被选中。但不在同一个容器中的几组单选按钮彼此不关联,是可以有多个被选中的。2.CheckBox控件复选框,允许用户选择和清除关联选项。与单选按钮不同原创 2017-07-09 15:41:58 · 46930 阅读 · 0 评论 -
C#学习笔记:CheckedListBox控件的用法
一、常用属性、方法和事件1.常用属性(1)CheckOnClick属性CheckOnClick属性是布尔类型的值,如果为True,那么单击条目就能将条目勾选;如果为false,则要双击条目才能将其勾选。(2)ColumnWidth属性ColumnWitdh属性是整型数据,表示多列条目各列的列宽。该属性只有在MultiColumn属性(允许多列显示)设置为true时才有意义。原创 2017-07-09 20:43:57 · 69157 阅读 · 2 评论 -
C#学习笔记:GDI图形高级编程(2)——关于Brush类
本文主要是探讨C#在GDI绘图高级编程中用到的Brush类、SolidBrush类、TextureBrush类、LinearGradientBrush类、PathGradientBrush类、HatchBrush类的用法原创 2017-07-13 16:06:08 · 5522 阅读 · 0 评论 -
C#学习笔记:GDI图形高级编程(1)——如何将图形画到控件上
之前学习OpenGL是用C语言写的程序,开发个界面,既繁琐又不美观,还一大堆BUG。现在学了C#,可以很轻易地进行界面开发,我就寻思着,怎么样把OpenGL搬到C#中。查了很多资料,得出了这样一个结论:OpenGL官方没有为C#语言提供OpenGL API接口,而视OpenGL为死对头的微软更不可能在自家的语言上为OpenGL提供支持。只有第三方做了一些适合在C#上使用的OpenGL接口,比如Cs原创 2017-07-12 16:32:40 · 24452 阅读 · 5 评论 -
C#学习笔记:设置label(标签)控件的背景颜色为透明
有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件。那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答案是否定的。看似很简单,其实不然,在实际操作过程中,很让人抓狂,抓狂到让你怀疑人生。关于透明首先要解释一下,什么叫做透明。在C#这里,透明就是指透过控件的背景,可以看到其父控件(容器)表面的颜色。所谓的原创 2017-07-23 20:30:00 · 92067 阅读 · 22 评论 -
C#学习笔记:文件操作
这里说的文件操作指的是文件的读写操作。按照文件贮存的形式,可把文件分为文本文件和二进制文件。在C#中,不同的文件类型有不同的操作方式。下面将研究在C#中如何对文本文件和二进制文件进行操作。文本文件操作文本文件操作主要涉及到几个类,分别是File类、FileStream类、StreamReader/StreamWriter类。要使用这几个类,首先要引用名称空间:Systerm.IO。File类:一个静原创 2017-11-01 16:05:52 · 706 阅读 · 0 评论 -
C#学习笔记:动态设置控件的背景图片
本文主要探讨的是在C#窗体设计过程中,如何设置控件的背景图片,以及图片的布局。谈到的控件属性有BackgroundImage,BackgroundImageLayout和Image。使用到的结构体、类、方法主要有,Image类,ImageLayout枚举类型,Bitmap类。原创 2017-05-29 14:41:45 · 21596 阅读 · 0 评论