專家對(duì)于VS2003 ActiveX控件的調(diào)試與方法
本文講述VS 2003 ActiveX控件的調(diào)試功能,怎樣使用ActiveX控件。這些內(nèi)容都是我今天花花了一周的時(shí)間查閱資料并像IT精英學(xué)習(xí)出來的,中間可能有不少錯(cuò)誤是我沒有挑出的,歡迎大家指正。
簡(jiǎn)單?。。?!這也就足夠了。并且往往第三方提供的控件功能更強(qiáng)大。但是世界上沒有免費(fèi)的午餐——這種控件往往是要收費(fèi)的。在這里肯定有的朋友會(huì)想到:“不是還可以利用DX(DirectX)來實(shí)現(xiàn)嗎,微軟也提供了Manager DX托管代碼的SDK”。
的確,利用DX來實(shí)現(xiàn)視頻捕獲和回放是一個(gè)很好的方法,無論從效率還是效果來說都是上上之選。不幸的是:微軟雖然提供了D3D、DirectDraw、DirectSound、DirectPlayer......但是唯獨(dú)沒有我們感興趣的,可以實(shí)現(xiàn)視頻捕獲的DirectShow的SDK。據(jù)我所知,國(guó)外有開源的代碼對(duì)DirectShow進(jìn)行了封裝,我也用過,個(gè)人感覺還不錯(cuò),有興趣的朋友可以查找一下這方面的資料,這里我就不多說了。
言歸正傳,要利用ActiveX在C#中實(shí)現(xiàn)視頻捕獲,先要做好以下準(zhǔn)備工作:
首先是要有VS2003或者VS2005的開發(fā)環(huán)境,這個(gè)我就不多說,相信地球人都知道。
其次是要安裝好攝像頭的驅(qū)動(dòng)程序,也就是說你在QQ或者M(jìn)SN視頻聊天時(shí)能看到你自己攝像頭的圖像。
然后是最重要的了:安裝支持視頻捕獲的ActiveX控件!什么控件?Pegasus CapturePro。哪里下載?下載地址:http://www.cncode.com/downinfo/3504.html 這個(gè)地址應(yīng)該是可以下載的,我剛剛又測(cè)試了一次。#t#
但是我不能保證它一直有效。這個(gè)控件是收費(fèi)的,網(wǎng)上有它的評(píng)估版,相信大家也有辦法,實(shí)在不行,那么給我發(fā)Email吧,我來告訴你怎么辦。安裝時(shí)一直"Next"下去后就可以了。
在VS2003中新建一個(gè)“Windows 應(yīng)用程序”工程,工程建立后,首先要向“工具箱”中添加ActiveX控件具體方法是在VS2003菜單的“工具”菜單中單擊“添加/移除工具箱項(xiàng)”。在彈出的對(duì)話框中選擇“COM 組件”選項(xiàng)卡,在下面的列表框中,將“Pegasus Imaging CapturePRO Control v3.0”前面的復(fù)選框選中,然后單擊“確定”返回編譯器編輯界面就可以了。然后將剛剛添加的控件拖放到窗體上調(diào)整好大小和位置,在屬性頁(yè)中修改屬性。修改屬性的方法和普通控件一樣,至于各個(gè)屬性的含義可以參考控件的幫助文檔。控件所有的方法、屬性和事件在幫助文檔中都有詳細(xì)的說明。
這里建議修改其“Name”屬性,方便以后操作,比如將Name屬性改為axCap(以后axCap都表示該控件)。將axCap的Size屬性改為320,240。因?yàn)楹芏鄶z像頭的默認(rèn)分辨率是320X240。窗體布局大概如下圖:
然后再窗體上放一個(gè)Button控件,在該控件的單擊事件中添加以下代碼:
- private void butConnect_Click(object sender, System.EventArgs e)
- ...{
- axCap.Connect (0);
- true;
- }
到這里就表示我們的ActiveX控件操作成功了,最基本的功能實(shí)現(xiàn)了,這里對(duì)上述兩行代碼進(jìn)行簡(jiǎn)單的解釋。第一行axCap.Connect(0)表示將控件連接到設(shè)備0。在Windows中,可以同時(shí)支持多個(gè)視頻設(shè)備,每個(gè)設(shè)備都有一個(gè)編號(hào)。第一個(gè)設(shè)備編號(hào)0,第二個(gè)設(shè)備編號(hào)1,依次類推。由于我的電腦上只連接了一個(gè)視頻攝像頭,所以視頻設(shè)備的編號(hào)是0。這里也就可以看出Connect()函數(shù)的參數(shù)實(shí)際上就是視頻設(shè)備的參數(shù),至于怎樣來確定視頻設(shè)備對(duì)于得編號(hào),下面會(huì)有詳細(xì)的說明。第二行axCap.Preview = true;表示打開預(yù)覽。Preview屬性為真時(shí)表示在控件上顯示視頻圖像,當(dāng)然要是該屬性為false,我們就看不到視頻了。