freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計(jì)算機(jī)軟件及應(yīng)用]arcgisengine10開發(fā)手冊(cè)word版(編輯修改稿)

2025-05-11 05:29 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 yInterface) 一個(gè)類可以有多個(gè)接口,聲明了接口變量并且指向一個(gè)對(duì)象的時(shí)候,這個(gè)變 量只能使用該接口內(nèi)的方法和屬性,而不能訪問(wèn)其他接口中的方法和屬性,如: Dim pMap as IMap Set pMap = New Map ‘這里會(huì)產(chǎn)生錯(cuò)誤此時(shí)的 pMap 只能使用 IMap 接口中定義的方法和屬性,比如獲取 圖層的個(gè)數(shù),添加圖層等,但是不能清空視圖上的內(nèi)容(因?yàn)檫@個(gè)方法是在 IActiveView 中定義的) QueryInterface(QI)很方便的讓我們?cè)谝粋€(gè)類的不同接口間進(jìn)行切換: Dim pView as IActiveView set pView= pMap ‘QI 現(xiàn)在 mView 就可以使用 IActiveView 中定義的方法了. 類類型繼承類型繼承是指類之間的接口類型的繼承,而不是繼承其實(shí)現(xiàn)。繼承過(guò)來(lái)的接口只是名稱相 同,具體的實(shí)現(xiàn)則不同。比如 ShpfileWorkspaceFactry 和 AccessWorkspaceFactry 都繼承 WorkspaceFactry , 而他們的打開(OpenFromFile)方法卻不一樣,ShpfileWorkspaceFactry 的(OpenFromFile)方法需要一個(gè) 文件目錄位置作為參數(shù),而 AccessWorkspaceFactry 的(OpenFromFile)方法需要一個(gè)數(shù)據(jù)庫(kù)(mdb)位置 作為參數(shù)。 接口繼承如 ImapFrame 接口和 IMapSurroundFrame 接口繼承于 IFrameElement 接口,則父類 接口 IFrameElement 所具有的方法和屬性對(duì)派生接口 ImapFrame 和 IMapSurroundFrame 都有效。 快速理解 QI C+QI 的例子 COM 中,和我們打交道的是接口,也就是說(shuō)類對(duì)我們是隱形的,那么我們要做開發(fā),要使用這些功能,我 們只能通過(guò)接口,通過(guò)接口暴露出來(lái)的方法,COM 是一種服務(wù)器端/客戶端架構(gòu),服務(wù)器端定義了操作的方 法,客戶端通過(guò)接口調(diào)用這些方法。下面的這幅圖很能說(shuō)明 COM 的結(jié)構(gòu): 言歸正傳,說(shuō)這篇博文的主題 QI,還記得上一篇我強(qiáng)調(diào)的,一個(gè)接口可以被多個(gè)類實(shí)現(xiàn),而 QI 要解決的 就是一個(gè)類實(shí)現(xiàn)多個(gè)接口的問(wèn)題。在 COM 中,接口定義了方法,類實(shí)現(xiàn)了接口中定義的方法,而一個(gè)接口 只能使用自己內(nèi)部定義的方法,而不能越界,就好比一個(gè)班級(jí)一樣,這個(gè)班級(jí)內(nèi)有班長(zhǎng),有學(xué)習(xí)委員,有 體育委員,每位干部各司其職,每一位干部負(fù)責(zé)自己職權(quán)范圍之內(nèi)的事情,各位干部相互協(xié)作,解決班級(jí) 內(nèi)的事情,這班級(jí)內(nèi)的每一位干部就相當(dāng)于一個(gè)接口,而這個(gè)班級(jí)就相當(dāng)于實(shí)現(xiàn)了這些接口的類。當(dāng)這個(gè) 班級(jí)的一些事情需要班長(zhǎng)處理的時(shí)候,我們就執(zhí)行班長(zhǎng)這個(gè)接口中定義的方法,當(dāng)需要學(xué)習(xí)委員處理的話, 我們?cè)賹?zhí)行權(quán)交給學(xué)習(xí)委員這個(gè)接口,這也就是接口之間的互相訪問(wèn)(Query Interface),通過(guò)這個(gè)我 們大體上對(duì) QI 有了感性上的認(rèn)識(shí),下面我們通過(guò)實(shí)例演示一下。 我定義了兩個(gè)接口 using System。 using 。 using 。 using 。 namespace QITest { interface IFavoriteFood { void Food()。}} using System。 using 。 using 。 using 。 namespace QITest { interface IVoice { void Voice()。}} 然后定義了一個(gè)Cat的類實(shí)現(xiàn)這里面的方法 using System。 using 。 using 。 using 。 namespace QITest { class Cat:IFavoriteFood ,IVoice { public void Food() { (我喜歡的食物是老鼠.)。}public void Voice() { (喵,喵,喵...)。 } }}這個(gè)Cat類的功能就是實(shí)現(xiàn)兩個(gè)接口的方法,貓最喜歡的事物是老鼠,而他的聲音是“喵,喵, 喵”。 運(yùn)行下 using System。 using 。 using 。 using 。 namespace QITest { class Program { static void Main(string[] args) { IVoice pVoice = new Cat()。 ()。//只能調(diào)用IVoice中定義的方法 // ()。這個(gè)就會(huì)報(bào)錯(cuò),因?yàn)? IVoice 接口中沒(méi)有這個(gè)方法的定義 IFavoriteFood pFavoriteFood = pVoice as IFavoriteFood。 ()。//只能調(diào)用IFavoriteFood定義的方法 ()。 }}}效果如下: 三.使用控件創(chuàng)建第一個(gè)桌面應(yīng)用程序 1) 新建一個(gè) Windows 窗體應(yīng)用程序(文件新建項(xiàng)目Windos 窗體應(yīng)用程序) 2)在點(diǎn)了確定之后,在 VS 的工具箱中找到到和 ArcEngine 相關(guān)的控件 其中,AxMapControl 就是 Map 地圖控件,AxPageLayouControl 是布局地圖控件, AxTOCControl 是目錄控件,AxToolbarControl 是 GIS 工具欄控件, AxSceneControl 是 Scene 三維場(chǎng)景控件,axGlobeControl 是 Globe 控件, AxLicenseControl 是許可控件,AxSymbologyControl 是符號(hào)選擇器控件, AxArcReaderControl 是 ArcReader 控件,AxArcReaderGlobeControl 是 ArcReaderGlobe 控件。AxLicenseControl 是許可控件,一般 GIS 系統(tǒng)中都必須 添加,否則無(wú)法使用。將剛才的窗體的名稱改為 Engine 3)然后添加 Toc, Map, Toolbar 控件。許可控件是首選的,否則無(wú)法使用 添加完這幾個(gè)控件后,VS 會(huì)自動(dòng)為我們添加一些引用 4)添加地圖文檔(Map 控件右鍵屬性) 5)Toolbar 控件和 Toc 控件與 Map 控件的關(guān)聯(lián)(設(shè)置 Buddy 屬性) 6)在 Toolbar 中進(jìn)行設(shè)置(Toolbar 控件右鍵屬性Itmes 選項(xiàng)) 7)添加工具命令 在 Toolbar control 上右鍵—屬性在 items 選項(xiàng)卡中添加幾個(gè)工具命令 8)運(yùn)行我們的應(yīng)用程序,發(fā)現(xiàn)下面的錯(cuò)誤 出現(xiàn)這個(gè)問(wèn)題的原因是因?yàn)?ArcGIS 10 發(fā)生了變化,將下面的語(yǔ)句添加到使用 AO 對(duì)象的前面: ()。 如我放在 Main 函數(shù)中 利用剛才添加的打開文檔的命令打開一個(gè)新的文檔 也可利用上面的放大,縮小工具進(jìn)行簡(jiǎn)單的操作了。 在上面,當(dāng)我們將這些空間拖到窗體中的時(shí)候,會(huì)自動(dòng)加載一些 dll,我們知道 ArcGIS Engine 編程,也就意味著和 COM 對(duì)象接觸。 代碼加載 Mxd 文檔 用代碼添加 Mxd 文檔,用到 (sFilePath),我們只要將 Mxd 文檔的路 徑傳給這個(gè)方法即可。我們添加一個(gè)按鈕: 在這個(gè)按鈕的單擊事件中填寫如下代碼: OpenFileDialog OpenMXD = new OpenFileDialog()。 = 打開地圖。 = E:。 =Map Documents (*.mxd)|*.mxd。 if (() == ) { string MxdPath = 。 (MxdPath)。}控件的 LoadMxFile 是用來(lái)加載地圖文檔的 我們將剛才寫的代碼封裝成一個(gè)函數(shù) public string OpenMxd() { string MxdPath = 。 OpenFileDialog OpenMXD = new OpenFileDialog()。 = 打開地圖。 = E:。 = Map Documents (*.mxd)|*.mxd。 if (() == ) { MxdPath = 。}return MxdPath。}添加 Shape 文件 AxMapControl 還包含下面三個(gè)方法用來(lái)添加不同類型的數(shù)據(jù) 這些方法的使用和上面的相似,方法中的參數(shù)可能不同,對(duì)于 AddShapeFile 來(lái)說(shuō),它需要兩個(gè)參數(shù),第一 個(gè)參數(shù)是 shp 文件名所在的目錄,第二個(gè)是文件名,因?yàn)榇蜷_ shp 文件要兩個(gè)參數(shù),所以構(gòu)造一個(gè)數(shù)組, 用來(lái)返回相應(yīng)的參數(shù) 代碼如下: public string[] OpenShapeFile() { string[] ShpFile = new string[2]。 OpenFileDialog OpenShpFile = new OpenFileDialog()。 = 打開Shape文件。 = E:。 = Shape文件(*.shp)|*.shp。 if (() == ) { string ShapPath = 。 //利用\\將文件路徑分成兩部分 int Position = (\\)。 string FilePath = (0,Position)。 string ShpName = (Position+1)。 ShpFile[0] = FilePath。 ShpFile[1] = ShpName。}return ShpFile。}庖丁解牛識(shí)控件 ArcGIS Engine 中提供了很多的控件,這些控件和 ArcMap 中的一些東西有對(duì)應(yīng)關(guān)系的: ArcGIS Engine 中的 MapControl 控件和 PageLayoutControl 控件分別對(duì)應(yīng)于 ArcMap 中的數(shù)據(jù) 視圖和布局視圖,MapControl 控件主要用于空間數(shù)據(jù)的顯示和分析,它封裝了地圖對(duì)象, 而 PageLayoutControl 控件是用于地圖的修飾和整理,可以用來(lái)生成專題圖等,它封裝了 PageLayout 對(duì)象。 TOCControl 控件和 ToolbarControl 控件分別對(duì)應(yīng) ArcMap 中的 Table of Contents 控件和工具條 控件,這兩個(gè)控件都有一個(gè) buddy 屬性,這兩個(gè)控件需要和一個(gè)伙伴空間協(xié)同工作,伙伴 控件可以是 MapControl,PageLayoutContro,SceneControl 或者 globeControl 控件。 IMapDocument pMapDocument = new MapDocumentClass()。 if ((path)) { (path, null)。 IMap pMap。 for (int i = 0。 i = 1。 i++) { pMap = (i)。 ()。 IEnumLayer pEnumLayer = (null, true)。 ()。 ILayer pLayer = ()。 while (pLayer != null) { ()。 pLayer = ()。}}}第一個(gè)控件 MapControl MapControl 對(duì)應(yīng)于 ArcMap 中的數(shù)據(jù)視圖,它封裝了 Map 對(duì)象,并提供了額外的屬性,方法,事件等。在 ArcGIS Engine 的幫助文件
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1