Step by step:一起来学C# (5)

前言:盼呀盼,实验室终于放暑假啦,虽然只有10天假,感觉还是很美滋滋哒。在家啥事儿没干,吃饭睡觉玩手机,渡过了两三天,终于找回点干劲。上次更新貌似已经是过年期间的事情了,当时写了几篇但是没有多少童鞋看,就有点松懈了,再次打开的时候很惊喜,涨粉儿啦,有赞有私信啦,嘎嘎嘎,感谢大家的支持与肯定~

这两天我打算把上学期用C#做界面时,感觉有所收获的部分,整理出来,写成前面一样的入门文档,希望能够给阅读我的文档的童鞋带来一点点帮助~

提纲:用c#实现一个拍照的功能程序,下面将给出实验效果和实现方法。


嘎嘎嘎

一、实验效果

1.运行程序

图1 程序运行界面

程序首先将检测本机的视频设备,若有多个视频设备,点击红色下拉框可以选择切换;若本机没有视频设备,将在最下方的文本框给出异常提示信息。

2.连接摄像头

图2 连接摄像头

点击程序界面的“连接摄像头”按钮,按钮上的文字将变成“关闭摄像头”,同时视频播放框将选定的摄像头捕捉到的图像内容播放出来。

3.拍照

图3 点击拍照

点击“拍照”按钮,将视频框中当前的图像捕捉下来,保存为图片,并在右边的图片框中显示出来。

4.关闭摄像头

图4 关闭摄像头

点击“关闭摄像头”按钮,按钮上的文字会变成“连接摄像头”,同时将摄像头关闭,视频播放框中不再右视频显现。

5.查看照片

图5 查看照片

拍摄的照片存放在程序的bin\debug文件夹下的image文件夹中,打开该文件夹即可查看。

二、实现步骤

本程序在《Step by step:一起来学C# (2)》给出的程序基础上进行编写。下面将从使用的外部控件的下载、引用、程序功能实现几个方面,介绍实现本功能程序的详细步骤。

1.下载AForge库

AForge目前更新到2.2.5版了,下载地址为:http://www.aforgenet.com/news/2013.07.17.releasing_framework_2.2.5.html。这个网页打开有些慢,下载得到的库文件之后将与程序一起给出。有想要自己下载的小伙伴可以按照下面的步骤尝试一下~

(1)浏览器中打开下载链接

图1 下载网页

在下载网页找到如红色框中的“downloads”,点击这个蓝色的单次链接,跳转到资源下载界面。

(2)选择下载的文件

图2  选择下载文件

在下载界面,选择要下载的文件,我们这边选择的是“Download Libraries only”,仅下载库文件。

(3)查看下载得到的库文件

图3 Aforge库文件

解压下载到的文件,在AForge.NET Framework-2.2.5-(libs only)\Release文件夹下可以看到之后要使用的库文件。

2.添加对AForge的相关引用

我们主要需要引用:“AForge.dll”、“AForge.Controls.dll”、“AForge.Imaging.dll”、“AForge.Video.dll”、“AForge.Video.DirectShow.dll”五个库文件。

本小节下面的内容是添加对AForge部分使用到的库的引用的详细步骤,对这部分比较熟悉的小伙伴可以直接跳过,阅读第3个步骤哟~

(1)进入引用管理器

图1 进入引用管理器

在VS右侧解决方案处,找到“引用”标签,右击“引用”,然后左键单击“添加引用”,即可进入引用管理器。

(2)在引用管理器选择要引用的文件

图2 浏览库文件

在引用管理器中,点击“浏览”按钮,然后选择要添加的库文件。

图3 添加库文件

此处以引用“AForge.dll”库文件为例,说明引用过程。在“选择要引用的文件”界面,进入之前下载并解压的AForge库文件夹下的Release子文件夹,选中“AForge.dll”文件,点击“添加”按钮。

图4 确定引用

选择好要引用的库文件之后,在引用管理器界面便可以看到多了一行“AForge.dll”并打上了钩,点击“确定”即可完成引用添加。

(3)查看新增引用

图5 查看新增引用

添加引用之后,就可以在解决方案的引用标签下看到新增的库文件啦~

(4)按照上面的方法完成引用的添加

图6 添加其他库文件引用

本节开头给出了5个要引用的库文件,按照上面的方法,一一引用进来,添加完引用之后,应当如图6给出的图片,至此添加引用的步骤完成啦。

(5)查看添加引用对工程带来的变化

图7 引用带来的变化

添加引用给工程带来啥变化呢?我们添加完引用之后,点击一下“启动”(不点击“启动”编译运行一下,看不到变化哦~),然后我们再进入工程文件夹下的bin\dehug文件夹,会发现我们引用的库文件全部被自动添加到这个文件夹下了。

3.添加AForge中的视频播放控件

本功能程序中,我们要使用到AForge给出的一个控件VideoSourcePlayer,这个控件在工具箱中,默认是不包含的,需要我们自己添加进工具箱,该控件位于刚刚引用的“AForge.Controls.dll”库文件中。

下面将介绍如何在工具箱中添加一个控件,对于这部分比较熟悉的小伙伴可以跳过第3步骤下面的内容啦~

(1)添加一个选项卡

图1 添加选项卡

添加一个选项卡,之后将新添加的控件就放到该选项卡下,找控件的时候方便一些。(这个步骤不是必须哒,只是让工具箱里的控件emm清爽一些~)

(2)打开选择工具箱项界面

图2 打开选择工具箱项界面

接下来我们在新建的“AForge”选项卡下面添加控件:右击“AForge”选项卡->点击“选择项”。这时选择工具箱项的界面会弹出,如下面的图3.

(3)浏览添加.Net Framework组件

图3 浏览添加.Net Framework组件

在“选择工具箱项”界面,点击“浏览”按钮,打开写有控件的库文件。

图4 打开库文件

选择“AForge.Controls.dll”库文件,点击“打开”按钮。

图5 选择加载

点击“打开”按钮之后,可能会弹出这个安全警告,点击“是”就OK,亲测无毒。。。。

图6 确定添加控件

然后我们看一下“选择工具箱项”界面,.Net Framework组件中是否有VideoSourcePlayer(在比较下面的位置,需要拖动一下右边的emm滑动条儿(忘了这玩意儿叫啥)),然后点击“确定”按钮。

(4)尝试将添加的控件拖到界面

图7 将控件拖到Form界面

添加完控件,我们在工具箱->“AForge”标签下面就可以看到导入的控件了。我们尝试一下,把“VideoSourcePlayer”控件拖到Form界面。(方法在之前的文章中提过,点住控件不放,一直拖到Form界面上即可)

图8 查看效果

拖完之后,我们便可以看到界面上多了一个其貌不扬方框(红色方框圈出来的),这就是我们之后要用的“VideoSourcePlayer”控件。

4.拖一个c#界面

下面我们先布置一下程序的前台界面,就是简单的控件拖拽,然后设置一下控件的属性,设置属性的方法在《Step by step:一起来学C# (2)》和《Step by step:一起来学C# (4)》中有简要说明,需要的话可以参考一下哦~

(1)拖控件得到一个C#程序界面

拖出来的界面如图1 拖界面所示,图中给出了使用到的控件名称,直接去工具箱里找一下拉过来就OK,界面布置大概一致就行,大小、位置不过多纠结。

图1 拖界面

(2)将来程序的后台代码注释或删除掉

因为是使用之前《Step by step:一起来学C# (2)》中的程序,原先有一部分代码,在本程序中就没有用处了,可以注释掉或删掉。这边是简单将原来的“点我吧”按钮改成了“连接摄像头”按钮,双击界面上的“连接摄像头”按钮,将原来的程序删掉或注释掉,然后我们再开始功能程序的编写。

图2 注释掉原来程序的代码

5.后台代码编写

终于到了编写代码的步骤了,激动~

(1)添加窗口变量声明


图1 声明变量

进入代码编写,在Form类里面添加变量声明,这边需要使用到一个视频设备集合的变量,声明方法如图。

(2)添加Form_load代码

我们要实现一个在窗体加载时,检测摄像头设备,并且将设备名称加入到下拉框comboBox的项中的功能,而窗体加载功能是在Form_load中完成的。

图2 添加Form_load代码

我们回到窗口界面,双击红色方框圈出的区域的一个点,c#会自动生成Form1_Load函数,我们在这个函数中添加功能代码即可,添加的代码如下图3。

图3 代码

注意:我们编写程序时常常会遇到下面的错误信息提示:“未能找到类型或命名空间名称...”

解决的方法如下:右击下面划有红色浪线的字段如图4中的“FilterInfoCollection”;选择解析;然后选择using引用。这个操作实际上就是在程序文件开头,添加了一行“using AForge.Video.DirectShow;”

如果右击没有解析选项,说明相应的库文件没有被添加到工程中,需要找到相应的库文件,使用第2步中的流程添加库文件引用。

图4 可能问题
图5 解决方案


运行测试:填写好代码时候,我们点击“启动”,运行测试一下。

图6 点击启动

运行程序结果如下,选择视频设备后面的下拉框中,自动显现检测到的我的笔记本电脑的摄像头。

图7 查看效果

(3)实现摄像头连接与断开功能

退出运行测试,下面我们编写连接摄像头部分的代码,首先双击界面上的“连接摄像头”,编写该按钮的响应程序。

图9 编写“连接摄像头”代码

添加的程序如下图:

图10 代码展示

我们点击VS的“启动”按钮,测试一下编写好的程序。点击界面上的“连接摄像头”按钮,按钮上的字就变成了“关闭摄像头”,同时“VideoSourcePlayer”控件中播放出摄像头捕捉到的画面。

图11 运行测试1

点击“图11”中的“关闭摄像头按钮”,按钮上的文字变成“连接摄像头”,同时“VideoSourcePlayer”控件中不再显示画面,摄像头停止工作。

图12 运行测试2

(4)实现拍照功能

播放了摄像头画面我们已经成功了一大步,下面要添加拍照功能,即点击“拍照”按钮,定格“VideoSourcePlayer”控件中的一帧画面,在图片框中显示,同时生成图片存到本地。

我们在工程文件下bin\debug文件夹下新建一个“image”文件夹,用于存储拍摄的图片。

图13 添加图片存储文件夹

然后双击界面上的“拍照按钮”,进入“拍照”按钮响应程序的编写。

图14 添加“拍照”按钮响应代码 

在函数中添加如下代码:

图15 代码展示

至此,程序功能便实现了,下面是测试界面,点击拍照,右边的图片框便定格一帧画面。此时打开bin\debug\image文件夹,会发现下面有刚刚拍摄下来的照片。

图16 运行测试

工程文件将在下面评论中给出链接,供大家参考,省的没调出来影响情绪哈~

文档有不够清楚和错误的地方欢迎留言指出,一起进步~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容