摘要: 1 拖一个ContextMenuStrip控件,然后可以直接在界面上编辑,也可以在FormLoad的时候动态添加 2 把这两个控件关联起来就可以实现listBox1的右键菜单跟ContextMenuStrip关联了。 3 但是如果我们希望是在listbox上右键有删除复制等操作则只要定义好菜单,然后像顶部菜单栏一样双击执行就可以了。 更多教学视频和资料下载,欢迎关... 阅读全文
posted @ 2017-09-24 14:50 gary_tao 阅读(1418) 评论(0) 推荐(0)
摘要: 首先定位到窗体的FormClosing事件中,写关闭之前要执行的方法名称 一般只需要添加下面的代码即可实现窗体关闭的时候提示是否确认退出 //捕捉窗体Close事件,关闭窗口时提示 if (MessageBox.Show("请您确认是否退出(Y/N)", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == Dia... 阅读全文
posted @ 2017-09-24 14:49 gary_tao 阅读(1511) 评论(0) 推荐(0)
摘要: 如果需要显示某个页面,则让他的Parent就是TabControl的控件名称,如果要隐藏,则等于null private void ToolStripMenuItemTeachPanelBasic_Click(object sender, EventArgs e) { TabPageTeachPanel1.Parent = TabControlTeachPanel... 阅读全文
posted @ 2017-09-24 14:43 gary_tao 阅读(1304) 评论(0) 推荐(0)
摘要: 1 添加如下引用 2 添加引用和Messagebox的代码。 3 测试可行 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetao... 阅读全文
posted @ 2017-09-24 14:43 gary_tao 阅读(329) 评论(0) 推荐(0)
摘要: 定位到Orientation属性即可 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaohai123@163.com 阅读全文
posted @ 2017-09-24 14:42 gary_tao 阅读(348) 评论(0) 推荐(0)
摘要: 把GridLines设置为True 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaohai123@163.com 阅读全文
posted @ 2017-09-24 14:41 gary_tao 阅读(1925) 评论(0) 推荐(0)
摘要: 设置它的DropDownStyle为DropDownList即可 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaohai123@163.com ... 阅读全文
posted @ 2017-09-24 14:40 gary_tao 阅读(1180) 评论(0) 推荐(0)
摘要: 就红色的代码可以: System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("hello"); sb.Append("world"); Response.Write("Length:" + sb.Length); sb.Remove(0, sb.Length);//清空StringBuilder的方法 Re... 阅读全文
posted @ 2017-09-24 14:39 gary_tao 阅读(4231) 评论(0) 推荐(0)
摘要: 在主窗体中使用的还是普通的函数,但是test函数有一个新的参数,就是method 这个method所指向的就是前面委托定义的method 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题... 阅读全文
posted @ 2017-09-24 14:39 gary_tao 阅读(1500) 评论(0) 推荐(0)
摘要: 可以使用Process.Kill方法,但是有时候执行完了该进程还在,要等一会才会自动关掉 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaohai... 阅读全文
posted @ 2017-09-24 14:38 gary_tao 阅读(324) 评论(0) 推荐(0)
摘要: public string UTF8ToGB2312(string str) { try { Encoding utf8 = Encoding.GetEncoding(65001); Encoding gb2312 = Encoding.GetEncoding("gb231... 阅读全文
posted @ 2017-09-24 14:37 gary_tao 阅读(825) 评论(0) 推荐(0)
摘要: 使用Math.Round方法即可实现保留指定的小数点后面位数,这种方法返回的还是double类型,而ToString方法并没有做实际转换 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:... 阅读全文
posted @ 2017-09-24 14:37 gary_tao 阅读(509) 评论(0) 推荐(0)
摘要: 写两个相同的方法,但是参数一个带ref,一个不带,从测试结果可以发现,a变量在ModifyValueByref之后发生了改变,而ModifyValueByvalue没效果 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.co... 阅读全文
posted @ 2017-09-24 14:34 gary_tao 阅读(494) 评论(0) 推荐(0)
摘要: 对于List,即长度不确定的数组而言,十万笔数据*12倍,就是120万笔数据,只需要93ms左右 换成了二维数组,效果也是差不多,78ms,可见list的效率只比double差一点点 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01... 阅读全文
posted @ 2017-09-24 14:30 gary_tao 阅读(308) 评论(0) 推荐(0)
摘要: DialogResult dr=MessageBox.Show("确认删除吗?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { //用户选择确认的操作 MessageBox.Show("您选择的是【确认】"); } else... 阅读全文
posted @ 2017-09-24 14:29 gary_tao 阅读(2077) 评论(0) 推荐(0)
摘要: 我把Driver.cs文件去掉了一行注释,发现报错 右击这个解决方案,选择属性,然后再启动项目中改成MySample 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:91035... 阅读全文
posted @ 2017-09-24 14:28 gary_tao 阅读(1981) 评论(0) 推荐(0)
摘要: 双击执行一个EXE程序,会有两个进程,程序关闭之后,貌似只能关闭你的程序,附加的vshost.exe仍然存在 在调试页面,改成release,同时取消最后一项启用承载进程 在生成页面,将高级选项中的调试信息改成none可以取消生成pdb文件 如果弹窗下面的提示框,在工具-选项,常规中取消勾选那个即可 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空... 阅读全文
posted @ 2017-09-24 14:28 gary_tao 阅读(1002) 评论(0) 推荐(0)
摘要: Ctrl+F打开查找对话框,然后输入查找字符串,电机右边的小三角,选择整个解决方案,就可以遍历所有文件查找指定字符了 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:91035896... 阅读全文
posted @ 2017-09-24 14:27 gary_tao 阅读(479) 评论(0) 推荐(0)
摘要: 比如我要将C:\Windows\Microsoft.NET\Framework\v3.5这个目录加入环境变量 则在系统的环境变量中点击Path,编辑,然后加入一个分号";",然后粘贴新的地址。 测试一下,我在任意位置都可以访问到这个文件夹下的exe文件了。 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai1... 阅读全文
posted @ 2017-09-24 14:26 gary_tao 阅读(409) 评论(0) 推荐(0)
摘要: 1 添加引用,找到dll文件 2 引用类的名称空间,生成类的实例,调用类的方法,测试OK。 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:ace... 阅读全文
posted @ 2017-09-24 14:26 gary_tao 阅读(284) 评论(0) 推荐(0)
摘要: 工具-选项-字体和颜色 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaohai123@163.com 阅读全文
posted @ 2017-09-24 14:25 gary_tao 阅读(271) 评论(0) 推荐(0)
摘要: 点击文件-新建-文件,然后再工程内创建文件 或者工程-添加-新建项 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaohai123@16... 阅读全文
posted @ 2017-09-24 14:24 gary_tao 阅读(498) 评论(0) 推荐(0)
摘要: 仅在MainForm.cs跟MainForm.Designer.cs文件页面上,底部有可以切换源代码跟设计的按钮(别的地方都木有) 点击就切换过来了 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ ... 阅读全文
posted @ 2017-09-24 14:24 gary_tao 阅读(399) 评论(0) 推荐(0)
摘要: 除了右击项目在生成中配置改成Release还要在顶部切换成Release 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaohai123@163.... 阅读全文
posted @ 2017-09-24 14:23 gary_tao 阅读(1243) 评论(0) 推荐(0)
摘要: 选中一批文本之后 批量增加注释:Ctrl+K Ctrl+C 批量取消注释:Ctrl+K Ctrl+U 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:ace... 阅读全文
posted @ 2017-09-24 14:22 gary_tao 阅读(715) 评论(0) 推荐(0)
摘要: 如下图所示,我想要另存一个工程,把 V4.4整个的项目另存为V4.5,我可以把解决方案文件(.sln)改名字,但是我没法把文件夹改名字,改了打开sln就说找不到。 很简单的一个思路是反正sln是多余的,没有实质的代码。我不如直接把sln删掉,然后改名文件夹,然后重新生成一个sln文件,我就可以任意取名了。结果证实这是可行的,我删掉了原来的sln文件,然后对文件夹里的东西随意改名,然后双击... 阅读全文
posted @ 2017-09-24 14:21 gary_tao 阅读(572) 评论(0) 推荐(0)
摘要: 比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装了.NET Framework并把csc.exe加入了环境变量(参考我的另一篇文章"C#.NET 如何在系统变量中加入新的环境变量.doc") 除了编译成dll,你还可以用下面的命令编译成别... 阅读全文
posted @ 2017-09-24 14:21 gary_tao 阅读(601) 评论(0) 推荐(0)
摘要: 首先把图像的资源添加到项目中, 选择资源文件(常规),修改一下这个资源的名字(比如叫做ButtonPic) 我们假定已经把图像放到了项目的某个文件夹下(比如Pic文件夹下,注意不是bin目录下的某个文件夹) 添加完成之后,所有这两个图片就进来了。 随后使用资源就比较方便了,可以直接ButtonPic.然后得到资源。 如果用载入图像的方式,则需要该图... 阅读全文
posted @ 2017-09-24 14:20 gary_tao 阅读(1198) 评论(0) 推荐(0)
摘要: 1 新建一个类库项目 2 直接改写这个Class1.cs文件 3 记得要添加Windows.Forms引用 4 我直接把在别的项目中做好的cs文件搞到这里来,连文件名也改了(FilesDirectory.cs),这里using System.Windows.Forms不会报错,因为前面已经添加引用了。 5 右击项目,在属性中可以修改生成dll的名称。 ... 阅读全文
posted @ 2017-09-24 14:19 gary_tao 阅读(540) 评论(0) 推荐(0)
摘要: 对于控制台程序而言,直接按F10(不按F5运行)就可以单步运行,当前运行行会显示为黄色(不管是一条语句,还是一个函数,都会直接执行完毕得到结果) 你可以在变量名上右击添加监视(会自动放到监视1中),也可以直接在监视1中手动输入变量名,回车之后也可以得到当前的数据 而相比之下,直接F11则更加详细(当执行到具体函数的时候也不会把一个函数看做一句话,而是跳转到函数的具体语句一行一行... 阅读全文
posted @ 2017-09-24 14:18 gary_tao 阅读(5116) 评论(0) 推荐(0)
摘要: 一个窗体有三个文件,全部拷贝到新的项目中 在新的项目中点击显示所有文件,然后右击导入的文件,点击包括在项目中,会自动修改颜色(此时还没有被识别为窗体) 重启这个项目,三个文件已经被识别出来了 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csr... 阅读全文
posted @ 2017-09-24 11:50 gary_tao 阅读(1298) 评论(0) 推荐(0)
摘要: 工具-选项,然后勾选"显示所有设置",然后在文本编辑器下面找到所有语言,勾选"行号"即可。 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrobot.gz01.bdysite.com/ 问题交流: QQ:910358960 邮箱:acetaoha... 阅读全文
posted @ 2017-09-24 11:49 gary_tao 阅读(475) 评论(0) 推荐(0)
摘要: 如下图所示,一般程序上次运行还好好的,而且不管你复制粘贴再简单的程序也出现这种错误提示. 先点击右侧的显示所有文件,下面列举了所有CS文件,右击点击包括在项目中,则该文件呈现绿色,再运行即可.不过这种方法有一个问题,你再去运行别的文件的时候又要重新包含别的一次,还要把这次的包含去掉,总之一次只能包含一个CS文件,否则就报错。 更多教学视频和资料下载,欢迎关注以下信息: 我的... 阅读全文
posted @ 2017-09-24 11:49 gary_tao 阅读(1130) 评论(0) 推荐(0)
摘要: 如下图所示,虽然添加了using System.Management,还是报错 System.Management似乎跟普通的命名空间不太一样,这个项目还需要添加。右击这个项目的csproj文件,然后添加引用,找到这个System.Management,然后确定 然后就不会报错了 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.you... 阅读全文
posted @ 2017-09-24 11:48 gary_tao 阅读(968) 评论(0) 推荐(1)
摘要: 有了前面的基础后,我们来测试一下如何把程序做的更通用,首先是把初始化的方法修改一下,在初始化的时候传递过去HTuple这个对象(改成了全局的变量,以便于不同的方法调用) 其次需要有相机打开/相机关闭,图像保存/图像加载的功能(方便我们快速做测试),前面的相机操作已经讲过了,这里图像的加载也只是套用了前面的加载一个静态图像的功能(把绝对地址改成了参数),保存图像调用了Halcon的Writ... 阅读全文
posted @ 2017-09-24 11:46 gary_tao 阅读(859) 评论(0) 推荐(0)
摘要: 接下来我们考虑把Halcon的代码移植到C#程序上,首先找到halcon的dll(.NET类库有1.0,2.0,3.5的,如果你安装了更新版本的halcon则有更新的.NET类库,我们复制最新的dll到自己新建C#程序的Debug目录下) 直接把这个DLL拖放到工具箱上,然后可以出现一个HWindowControl的控件(跟上一节OPENGL很像) 把你的C#程序目标平台改成对... 阅读全文
posted @ 2017-09-24 11:45 gary_tao 阅读(761) 评论(0) 推荐(0)
摘要: Halcon是图像处理比较牛逼的一个软件(德国人的东西,做的非常强大,里面集成的算法很多,可能你一辈子研究这个也做不过他),然而牛逼归牛逼,康耐视,基恩士也很牛逼,但是日本人的东西一般太过封闭,屌丝用不起,也用不上,用上了也很难自己DIY(我们研究Halcon因为他只是一个PC平台的图像处理库,不管你用C#还是C++,QT,JAVA都可以自己开发上位的程序,自己搭配相机做项目,而不是被各种硬件和软... 阅读全文
posted @ 2017-09-24 11:44 gary_tao 阅读(1360) 评论(0) 推荐(0)
摘要: 图像处理是工控很有价值的一个领域,比如人脸识别,车牌识别,还有产品的位置识别,瑕疵检测,对于个人学习来说,我们无法直接上手几万块的成熟工业相机(高端的康耐视要6万左右,而且是黑白的,要测试一些带颜色的算法功能无法实现),先要用便宜的东西做一些简单的测试(原则上做教程不应该涉及硬件,因为如果读者无法按照你的硬件标准学习,那也只能走马观花看一遍,但是实际上要做工控必须要涉及硬件,可以先从简单的便宜的开... 阅读全文
posted @ 2017-09-24 11:43 gary_tao 阅读(1677) 评论(0) 推荐(0)
摘要: 这一部分我们首先实现视图控制(包括了平移/旋转/缩放),前面我们已经讲过,通过lookat一个函数,或者通过translate+rotate两个函数,都能实现视图的控制(两个函数的方式比较简单,但是通用性不够,因为这个更像是画布就像去参观卖房子的模型,你可以把模型随便上下左右移动翻转看外面,但是如果要像第一人称视角到房子里面爬窗户,上房顶,钻地道,这种视角肯定是不够的。可以想象CS游戏中,整个地图... 阅读全文
posted @ 2017-09-24 11:42 gary_tao 阅读(528) 评论(0) 推荐(0)
摘要: 本节最重要的一个内容,就是让视野可以平移+旋转+缩放(就像打CS游戏一样以第一人称视角去观察物体,如果可能的话W,S,A,D四个按键控制人物移动,还有鼠标控制视角),本节最重要的一个概念就是设置观察视角(gl.LookAt函数,这个函数一共有九个参数,我们可以分成三组,第一组XYZ表示了眼睛的位置,第二组XYZ表示了物体的XYZ,第三组代表人眼睛的朝向,正常为(0,1,0),如果不用眼睛而是用相机... 阅读全文
posted @ 2017-09-24 11:41 gary_tao 阅读(542) 评论(0) 推荐(0)
摘要: 三维在理解了如何绘制2D元素之后,我们尝试绘制3D元素。 其实多个三角形也能够成四面体,多个长方形也能够成六面体,所以绘制3D元素的时候,只要顶点数量匹配就行了 这里我们尤其注意,我把绘制之前的三个平移和三个旋转单独拿出来做成变量,如果你的TranslateZ默认值是0的话,你默认看到的是黄色面,如果把TranslateZ设置为负值,则看到了红色,且越来越小,如果把TranslateZ设... 阅读全文
posted @ 2017-09-24 11:40 gary_tao 阅读(620) 评论(0) 推荐(0)
摘要: OPENGL的虚拟仿真对于工控自动化的意义很大,虽然市面上有很多的第三方软件比如Solidworks,Mathlab,ProE等等软件可以做仿真,而且能够实现的功能包括了流体分析,力学分析,摩擦力分析等等,这些都是我们自己写一个简单仿真软件无法实现的,然而如果要做一个标准的软件,我们就只能使用C++,C#,JAVA这些软件自己写了。 仿真的意义在于可以提高编程效率,在空间轨迹规划部分,如... 阅读全文
posted @ 2017-09-24 11:39 gary_tao 阅读(1316) 评论(0) 推荐(0)
摘要: 我们先把前面的代码封装成一个完整的类,因为跟网络相关的方法并不一定是建立socket的服务器和客户端,所以还是应该把两个分开,比如获取本机IP,修改本机IP,PING远程主机这些事情应该放在一个单独的类里面,而且里面的方法应该是静态的(一个应用不会需要多个实例来做上面讲的这些事情),所以我个人建议做成一个单独的类FunctionNetwork,这样可以让主程序很简洁 注意可能涉及到IP地... 阅读全文
posted @ 2017-09-24 11:38 gary_tao 阅读(343) 评论(0) 推荐(0)
摘要: 对于事件和委托机制不够理解的读者可以参考本节提供的委托相关的范例程序,这个是控制台的程序,比较简洁(书店发布一本书的事件注册到某个读者A身上,原理跟前面一小节讲的是一致的,只不过没有通过委托对外发送数据,所以实用性不是很广,后面还有两个范例也是对事件和委托的进一步深入) 事实上我任意一个控件双击事件进去也是这么个套路,比如整个程序的加载和关闭事件,我们只是在Form的事件上选几个鼠标双击... 阅读全文
posted @ 2017-09-24 11:38 gary_tao 阅读(6749) 评论(0) 推荐(0)
摘要: 接下来我们尝试实现最简单的Socket客户端,为了确保只可能你的代码有问题,服务器要先用别人成熟的代码测试(这也是编程的一个技巧,先不要用自己写的客户端测试自己写的服务器,这样出了问题你也不知道谁有问题,也可能都有问题,而是一样一样来,拿不准的先用别人的),先开启这个Socket服务器 尝试连接到服务器,只要参照网上的做法,调用Socket的connect方法和disconnect方法即... 阅读全文
posted @ 2017-09-24 11:37 gary_tao 阅读(605) 评论(0) 推荐(0)
摘要: 做Socket通信之前,我们首先要实现几个基本的功能 获取本机IP地址(如果我们要做Socket的服务器,肯定不希望用户每次填写本机IP地址,而是自动获取本机IP地址,这一点我们最好能做的比已有的软件更合理,更好用),下面的方法简单实现了获取本机IP地址,后面一个方法还把IPV6的地址也得到了,但是目前还没有什么用处(可能以后用得到) 能PING通一个远程的IP地址(如果我们要做Sock... 阅读全文
posted @ 2017-09-24 11:36 gary_tao 阅读(3280) 评论(0) 推荐(2)
摘要: 有一些BUG需要处理,比如小鸟太高或者太低都应该报错(不然直接掉到窗口下面去了),这个方法跟前面的HitTest应该独立开来,而不是掺和在一起 测试确实可以检测是否超过边界(如果要非常精确,那么就不仅仅是判断跟窗体宽度和高度的比对了,要去掉小鸟本身的宽度和高度) 此外小鸟和管子都应该用一些背景图片代替,而不是只有填充的颜色,这里只是简单的用了普通的图片(尤其是管子会被随时缩放,... 阅读全文
posted @ 2017-09-24 11:32 gary_tao 阅读(1186) 评论(0) 推荐(0)
摘要: 前面我们大致实现了鸟的一圈轨迹(其实如果你不做这个,就用两个矩形块的碰撞检测代替也可以),跟所有前面的教程一样,草稿打完了就要设计封装成一个类。至少到目前为止我们已经知道了鸟的属性和方法,先不要管方法具体如何实现,也不管方法输入输出,我们先要设计大概有几个方法。 鸟的初始化方法-根据前面一节导入导出一些多边形点(这里初始化只需要导入一堆点就行了) 鸟的销毁方法-比如鸟撞到管子上或者地底下,整个游戏... 阅读全文
posted @ 2017-09-24 11:31 gary_tao 阅读(1148) 评论(0) 推荐(0)
摘要: 接下来我们实现整个的游戏流程,当点击开始游戏,则需要三个事情开始运行 1 小鸟初始化并往下掉(当然还是可以用按钮让他飞一下) 2 每隔一定时间从左侧产生一个管子(宽度和高度随机,产生周期2000ms左右) 3 每隔一定时间检测是否鸟撞到了管子(这个时间周期要50ms左右,也可以更大或者更小) 跟上一节不同的地方在于,小鸟是唯一的,而管子不唯一。我们之前只是判断一个小鸟和一个管子是否有碰撞... 阅读全文
posted @ 2017-09-24 11:31 gary_tao 阅读(517) 评论(0) 推荐(0)
摘要: 前面一小节我们实现了简单的碰撞检测,但是实际上游戏的对象并不是一个标准的矩形(小鸟是一个不规则的物体,其实碰撞的管道也是不规则物体),所以如果真的要做的比较完美,我们自己要写一个方法,能够导入一个图像,然后自己照着图像描绘一个不规则的轮廓,然后把这个轮廓提取出来点,以后判断的时候只要判断所有A图形轮廓的点是否在B区域就可以了。所以前面的矩形和椭圆已经不够用了,我们要用一个自定义的点位数组point... 阅读全文
posted @ 2017-09-24 11:30 gary_tao 阅读(851) 评论(0) 推荐(0)
摘要: 在继续往下做之前,我们需要把之前的代码尽可能的精简(会对后面很有好处,而且读者也应该仔细比对这一部分的代码和上一部分哪里真正得到了优化,从而提高编程水平)。 首先数据库的操作类有哪些是可以做的更加普遍,变量名也通用的,至少要连接的目标数据库名称,目标工作薄,密码都应该是通用的,连接方法也是通用的,所以应该把连接到数据库的这个方法独立出来(我后面要写一个读写QuestionUser的类只要复制粘贴修... 阅读全文
posted @ 2017-09-24 11:29 gary_tao 阅读(819) 评论(0) 推荐(0)
摘要: 要做一个FlappyBird,最核心的功能是创建几个区块,如果发生碰撞则游戏结束(小鸟撞到管子上,或者小鸟到地上),至于随机生成一些管子,小鸟如何跳跃,最后如何统计分数,都不难想通要怎么做。 首先是知道如何在窗体上绘制你要的东西,C#为我们提供了GDI+的功能,你可以定义一个Graphic对象,然后调用它的Draw方法,可以发现能绘制的东西很多,矩形,椭圆,多边形,曲线等等(绘制的是多边形,用... 阅读全文
posted @ 2017-09-24 11:29 gary_tao 阅读(307) 评论(0) 推荐(0)
摘要: 上一节我们简单介绍了数据库的读写,所使用的数据库都是随便写的(用水果代替,但不是真正的食品零售数据表,至少没有价格,销量等等)。这一节我们思考如何实现一个测试题的数据库,所谓的测试题数据库就是假定系统里预存了1000道题目,每个学生考试随机抽查50题,以保证每次考试很难相互抄袭,而且每个题目设置时间限制,到时间不作答就认为放弃,考试完成自动阅卷等等,这些功能都是普通的纸质考试没法实现的。 那么... 阅读全文
posted @ 2017-09-24 11:28 gary_tao 阅读(1689) 评论(0) 推荐(0)
摘要: 要理解MySQL,SQLServer,ACCESS都是数据库的品牌,不同品牌的数据库在不同的领域,适用场合有所不同。ACCESS应该是最简单,至少是Windows上最容易上手的数据库,MySQL可能跟PHP搭配在做网站的时候用的比较多,SQLServer跟ASP.NET搭配做服务器。由于ACCESS有很多版本,我们为了兼容之前的版本,尽量使用ACCESS2003的数据库(MDB格式,往后的版本可能... 阅读全文
posted @ 2017-09-24 11:27 gary_tao 阅读(2291) 评论(0) 推荐(0)
摘要: 跟前面一章讲解计算器一样,到最后一小节,我们总是要把代码规整好,让整个程序显得非常简洁,先做个文件夹把我们自定义的类库都放进去 然后我们开始整理Form1里面的代码,为了实现超级热键的功能,我们应该完善FunctionMouseKeyboardHook这个类(因为现在叫做超级热键,可能后面我们需要用鼠标键盘来触发干一些别的事情,到时候如果也能拿着代码直接移植就会很有意义,不改变业务的框架... 阅读全文
posted @ 2017-09-24 11:26 gary_tao 阅读(275) 评论(0) 推荐(0)
摘要: 我们前面已经理解了如何使用官方的代码实现鼠标键盘的监控,其实还差一点,因为他的代码只能捕捉单个的按键,而其实我们要的是组合键。什么是组合键呢?比如我想定义同时按下WIN+C是去执行屏幕截图。这只要理解为WIN键按下且没有弹起,C键也被按下,然后去执行一个EXE程序即可。 我们需要写一个类把之前的封装起来 这样就比较简洁,初始化和添加绑定都只用了一行(+=就是添加绑定,读者也可以测试多... 阅读全文
posted @ 2017-09-24 11:25 gary_tao 阅读(215) 评论(0) 推荐(0)
摘要: 我们上一节介绍了编写简单计算器,实际上也是出于实用角度(这个计算器只要你肯改,肯定能做的比微软自带的计算器好用)。这一节介绍做简单的超级热键(所谓的超级热键是指自定义快捷键的功能) 超级热键的最关键一步是绑定键盘钩子,就是键盘按下一组快捷键,主窗体能够响应(自己做不了或者想不到怎么做,就要百度搜别人有没有成熟的可以借鉴),先来看别人的范例程序(了解什么是带类库输出的项目,右击可以修改成Demo测试... 阅读全文
posted @ 2017-09-24 11:24 gary_tao 阅读(301) 评论(0) 推荐(0)
摘要: 我们接着往下改,为了让这个计算器更加实用,我们要像官方的计算器一样可以接着计算(你算出来一笔数据之后,可以接着累加累减,我们暂时不考虑加括号,优先级之类的,因为绝大部分情况下我们打开计算器就是为了进行简单的四则运算),当然我们这个需要每次算完之后点击一下接着计算(微软官方的是计算之后,再次按数字键默认就重头开始计算,类似于点击了清除,再次按加减乘除键就接着计算,类似于点击了接着计算),读者可以自己... 阅读全文
posted @ 2017-09-24 11:23 gary_tao 阅读(1182) 评论(0) 推荐(0)
摘要: 用过VB6或者早期代码的人都应该能感觉到,C#目前也没看出来有什么特别之处,所谓的面向对象也没有什么体现。所以我们需要在原有基础上重写一份代码,然后比较两种做法的优缺点。我们在项目上右击添加一个FunctionMath的类。 之所以叫做FunctionMath,是讲他专门处理数学运算的(加减乘除之外,开方根,矩阵运算,四元数运算等等都可以认为是Math该做的事情,我们单独做这个类就是为了... 阅读全文
posted @ 2017-09-24 11:22 gary_tao 阅读(1263) 评论(0) 推荐(0)
摘要: 前面介绍了微软的控件,也介绍了几个第三方控件,那么这些控件是如何做出来的?即便我们自己不做控件,也至少要理解控件的原理。 如果要创建一个自定义控件,首先新建一个C#下面的Windows窗体控件库 最简单的方法只要拖一个label,放一个定时器,定时器每隔一秒获取并显示当前系统时间即可(F5可以运行测试看到效果) 那么还是跟之前一样,把这个生成的DLL拖放到工具箱就可以给新的项目... 阅读全文
posted @ 2017-09-24 11:20 gary_tao 阅读(626) 评论(0) 推荐(0)
摘要: 要学会基本的窗体控件(button,textbox,label这种,以及他们的重要属性),每个控件的命名要符合规范(例如一般文本框都会重命名txtXXXXX,按钮都会重命名btnXXXXX) 为了防止出错,文本框可以设置为只读(选中textbox之后把ReadOnly属性改为True) 为了提高用户体验,运行的时候显示到屏幕正中央(选中整个Form之后把StartPositio... 阅读全文
posted @ 2017-09-24 11:20 gary_tao 阅读(615) 评论(0) 推荐(0)
摘要: 这一部分我们介绍如何使用第三方的控件,我们前面一节介绍了使用微软提供的官方控件,比较中规中矩,而且也不用担心稳定性。但是很多时候我们还是会希望用第三方的控件让自己的软件更美观,更独特。 就单纯的按钮,文本框这种东西,我个人比较推荐使用CSkin的控件,注意用法,只要把DLL放到程序的Debug目录中,然后直接按住拖放到工具箱即可(可以看到很多Skin开头的控件名称) 来测试用一下,搜索t... 阅读全文
posted @ 2017-09-24 11:19 gary_tao 阅读(764) 评论(0) 推荐(0)
摘要: 记住只要掌握常用的几种数据类型即可(比如Single就很少用了,要用浮点数一般就用Double,现在的计算机内存已经大到不需要你去考虑优化什么了) 比如仅仅是整形就有9种,实际上我们只需要知道int和char类型即可(很少用到byte,long,剩下的基本用不到) C# 支持 9 种整型:sbyte、byte、short、ushort、int、uint、long、ulong 和 char。整型具有... 阅读全文
posted @ 2017-09-24 11:18 gary_tao 阅读(372) 评论(0) 推荐(0)
摘要: 可以从左侧的工具箱中找到常见的控件(你要在Form1这种窗体上) 为了方便你也可以把工具箱整个拖过去,这样从上到下控件都给你排好了 对于按钮来说,最常见的就是他的背景颜色,文字,字体,还有是否启用(我们输入按钮名称+点就可以访问这个控件的所有属性,事件和方法,注意属性是一把扳手的标识,事件是一个闪电,方法是一个小方块) 详细解释一下属性:我们先判断这个按钮是否已经En... 阅读全文
posted @ 2017-09-24 11:18 gary_tao 阅读(2644) 评论(0) 推荐(0)
摘要: 安装过程比较简单,用虚拟光驱工具加载ISO文件,然后打开EXE安装即可,主要使用VS2013(VS2015也出来了,但是用的还不算多) 建议设置为深色(比较容易看清) 建议显示行号,不要自动换行(提高效率) 建议设置自定义字体,微软雅黑16号(保护眼睛) 牢记几个快捷键 F5:运行 F11:单步运行 Shift+F5:停止运行 C#最主要用的两种... 阅读全文
posted @ 2017-09-24 11:17 gary_tao 阅读(577) 评论(0) 推荐(0)
AmazingCounters.com 我要啦免费统计