版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、GIS 應(yīng) 用 開 發(fā)Developing GIS Applications with ArcObjects using C#.NET江西省研究生優(yōu)質(zhì)課程 主講:蘭小機 GIS博士、教授 Email : landcom8835@163.com QQ :305333315
2、 課件: ftp://218.87.136.94/,蘭小機簡歷,蘭小機,男,1965年12月生,博士,教授,碩士生導(dǎo)師,江西省百千萬人才工程人選,江西省高校中青年學科帶頭人,江西省優(yōu)秀研究生指導(dǎo)教師 ;地理學學科帶頭人、負責人。主要經(jīng)歷1988年7月畢業(yè)于南方冶金學院工程測量專業(yè),獲學士學位,并留校任教1994年6月畢業(yè)于武漢測繪科技大學工程測量專業(yè),獲碩士學位,回校任教2005年6月畢業(yè)于南京師范大學地圖學與地理
3、信息系統(tǒng)專業(yè),獲理學博士學位,回校任教,,主要研究方向GIS應(yīng)用開發(fā)物聯(lián)網(wǎng)、無線傳感器網(wǎng)絡(luò)與GIS分布式并行計算環(huán)境下空間數(shù)據(jù)的存儲管理空間數(shù)據(jù)庫理論與空間數(shù)據(jù)挖掘,在研項目,江西省安監(jiān)局科技項目--江西省重大危險源在線監(jiān)控及應(yīng)急救援信息系統(tǒng),150萬元,主持國家自然科學基金項目--面向GML的時空關(guān)聯(lián)規(guī)則及序列模式挖掘研究(編號:40971234) ,35萬元,主持國家自然科學基金項目--本原GML空間數(shù)據(jù)庫理論及GMLG
4、IS與傳統(tǒng)GIS集成研究(編號:40761017) ,16萬元,主持江西省自然科學基金項目--分布式海量GML 空間數(shù)據(jù)并行存取與處理關(guān)鍵問題研究,2萬元,蘭小機主持江西省教育廳科技項目--云計算環(huán)境下海量GML空間數(shù)據(jù)分布式存儲管理關(guān)鍵問題,2萬元,蘭小機主持萍鄉(xiāng)市基礎(chǔ)地理信息系統(tǒng)研究與開發(fā),22萬元,主持城市公眾地理信息服務(wù)系統(tǒng)研究與開發(fā),10萬元,主持,Chap. 3 使用ArcObjects控件編程(6學時),為了能夠
5、快速建構(gòu)一個具有GIS功能的獨立應(yīng)用程序,ArcGIS Engine為開發(fā)者提供了多個可視化的組件即控件,如 LicenseControl 、MapControl、PageLayoutControl、TOCControl、ToolbarControl和SymbologyControl等。 在VS .NET中使用ArcObjects,需要使用ESRI interop程序集,這些程序集在托管的.NET代碼和非托管的COM代碼之間起了橋梁
6、作用。ESRI interop程序集為ArcGIS控件提供了能夠位于.NET窗體上的控件(繼承自AxHost類),這些控件名前綴為“Ax”,如AxMapControl、AxPageLayoutControl、AxTOCControl和AxToolbarControl等。,,Using ArcGIS Engine controls in Winforms Using ArcGIS Engine Controls in WPF,本章內(nèi)容
7、:,MapControl控件 PageLayoutControl控件TOCControl控件ToolbarControl及相關(guān)對象Control Commands(SymbologyControl in Chapter 6)在WPF程序中使用ArcGIS Engine控件,3.1 MapControl控件,MapControl對應(yīng)于ArcMap中的數(shù)據(jù)視圖,其主要功能為空間數(shù)據(jù)瀏覽、空間數(shù)據(jù)可視化、空間查詢、空間分析、空間數(shù)
8、據(jù)編輯等。在可視化環(huán)境中,可以通過控件的“屬性”頁設(shè)置控件的相關(guān)屬性,也可以通過編程來設(shè)置。,,MapControl是對Map對象的封裝,并提供了額外的屬性、方法、事件用于:管理控件的外觀、顯示屬性和地圖屬性;添加并管理控件中的數(shù)據(jù)層(data layers);裝載Map文檔(mxd)到控件中;從其它應(yīng)用程序拖放數(shù)據(jù)到控件中;使用鼠標拉繪幾何形狀并繪制到屏幕顯示中。,3.1.1 MapControl的主要接口,MapCon
9、trol實現(xiàn)的主要接口有:IMapControlDefaultIMapControl2IMapControl3IMapControl4( new in 9.2 ) IMapControlEvents2事件接口ITOCBuddyIToolbarBuddy,3.1.1.1 IMapControlDefault接口,IMapControlDefault接口是地圖控件缺省接口,多數(shù)開發(fā)環(huán)境自動使用這個接口定義的屬性、方法。由
10、于MapControl是一個自動化控件,當它被放到一個容器--如窗體上后,它會自動產(chǎn)生一個被稱為axMapControl1的對象,這個對象可以直接使用缺省接口定義的屬性和方法。這個接口也代表了控件最新版本的接口,MapControl當前最新版本接口為IMapControl4.當需要使用這個接口的時候,可以使用下面的代碼:IMapControlDefault pMapControl = axMapControl1.Object as
11、 IMapControlDefault;,IMapControl2.Extent:地圖的可視范圍;IMapControl2.FullExtent: 地圖中所有圖層的覆蓋范圍.,,3.1.1.2 IMapControl4接口,IMapControl4是任何一個與MapControl相關(guān)的任務(wù)的出發(fā)點,如設(shè)置控件外觀,設(shè)置Map對象或控件的顯示屬性,添加或者管理圖層、地圖文檔,在控件上繪制圖形和返回Geometry等。目前,與IMap
12、ControlDefault一致。,IMapControl2,,IMapControl3接口繼承IMapControl2,并增加了以下8個屬性和一個方法:CustomProperty --object:使用該屬性關(guān)聯(lián)有用信息DocumentFilename --string):返回MapControl裝入的地圖文檔的文件名DocumentMap --string :返回MapControl最后裝入的地圖(Map)名稱KeyInt
13、ercept --int :返回或設(shè)置MapControl截取鍵盤按鍵信息,Object --object:返回潛在的MapControl控件,當在VB.NET或C#.NET中使用IMapControl2時,一定要使用Object屬性或者使用指定容器的代碼。因為對于.NET,真正的控件是被包裝于宿主對象里面的。ShowMapTips --bool:確定是否顯示地圖的Map TipsTipDelay --int :設(shè)置Map Tips
14、的延遲時間TipStyle --esriTipStyle :設(shè)置Map Tips的顯示樣式SuppressResizeDrawing ():在控件尺寸發(fā)生變化過程中,阻止數(shù)據(jù)實時重繪,與IMapControl3相比,IMapControl4多了以下兩個可讀寫屬性:public bool AutoKeyboardScrolling {get; set;}:確定是否使用鍵盤上的‘Home’ (keyCode 36)鍵、‘End’ (
15、keyCode 35) 鍵、‘Page Down’ (keyCode 34) 鍵、‘PageUp’ (keyCode 33) 鍵和箭頭鍵 (keyCode 37-40) 來平移控件中的地圖,缺省情況下該屬性為true. 絕大多數(shù)開發(fā)環(huán)境使用箭頭鍵來切換窗體或容器中的焦點控件;在這些開發(fā)環(huán)境中,缺省情況下MapControl 不會接收箭頭鍵來平移地圖的顯示。為確保箭頭鍵能夠被MapControl接收并平移地圖的顯示,KeyInterce
16、pt屬性應(yīng)設(shè)置為攔截箭頭鍵(esriKeyInterceptArrowKeys),且AutoKeyboardScrolling設(shè)置為true。,,public bool AutoMouseWheel {get; set;}:確定鼠標滾輪是否用于縮放地圖的顯示;缺省情況下該屬性為true。,引用控件本身,當使用IMapControl2接口時:IMapControl2 pMapControl = axMapControl1.Object
17、as IMapControl2;或IMapControl2 pMapControl = axMapControl1. GetOcx() as IMapControl2;當使用IMapControl3接口時:IMapControl3 pMapControl = axMapControl1.Object as IMapControl3;或IMapControl3 pMapControl = axMapControl1. GetOc
18、x() as IMapControl3;,當使用IMapControl4接口時:IMapControl4 pMapControl;pMapControl = axMapControl1.Object as IMapControl4;或pMapControl = axMapControl1. GetOcx() as IMapControl4;,使用箭頭鍵、鼠標滾輪實現(xiàn)地圖導(dǎo)航,使用箭頭鍵平移(Panning)地圖axMapCon
19、trol1.KeyIntercept = (int) esriKeyIntercept.esriKeyInterceptArrowKeys;axMapControl1.AutoKeyboardScrolling=true;使用鼠標滾輪縮放地圖axMapControl1.AutoMouseWheel = true;,axMapControl1.KeyIntercept = (int) esriKeyIntercept.esriKey
20、InterceptArrowKeys;AutoKeyboardScrolling=true;,3.1.1.3 IMapControlEvents2接口,IMapControlEvents2是一個事件接口,它定義了 MapControl能夠處理的全部事件,如 OnExtentUpdated是地圖的 Extent(可視范圍)屬性發(fā)生變化時觸發(fā)的事件, OnAfterscreenDraw是繪屏結(jié)束后觸發(fā)的事件等。 當?shù)貓D的覆蓋范圍變化時,
21、觸發(fā)OnFullExtentUpdated 事件,例如,往地圖中新增加一個圖層,其覆蓋范圍大于原圖的范圍。???,,在絕大多數(shù)開發(fā)環(huán)境中,沒有必要手工編寫代碼進行事件的注冊,而只需在控件的屬性窗口中雙擊某事件自動進行事件與其處理方法的關(guān)聯(lián)。,3.1.1.5 ITOCBuddy,該接口定義了以下2個方法:GetActiveView Returns the underlying object implementing basic map
22、 and ActiveView. This is used to populate the TOC. GetScale Returns the scale of the supplied BasicMap, this allows for objects that do not support IMap.,3.1.1.6 IToolbarBuddy,Objects that implement the IToolbarBuddy i
23、nterface can be passed to the IToolbarControl.SetBuddyControl method. The CurrentTool is the tool used to interact with the display area of the IToolbarControl.Buddy.,Samples:MapAndPageLayoutSynchAppMapControlMa
24、pTipsMapControlGeoEventsMapControlDrawTextMapControlCADViewerMapControlSaveLayerFile,Guid.ToString (string format )命名空間:System;程序集:mscorlibformat 一個單格式說明符,它指示如何格式化此 Guid 的值。format 參數(shù)可以是“N”、“D”、“B”或“P”。,3.1.2 MapCo
25、ntrol控件與MXD文件,MapControl控件可以“鏈接”或“包含”地圖文檔。對于文檔文件,MapControl控件可以直接使用LoadMxFile方法來載入,這是最簡單的方法。除此之外,可以使用IMapDocument接口定義的屬性和方法來加載一個MXD文件。,下面是一個載入文檔的例子--axMapControl1.LoadMxFile,private void LoadMapDocument(){System.Windo
26、ws.Forms.OpenFileDialog openFileDialog2;openFileDialog2 = new OpenFileDialog();openFileDialog2.Title = "Open Map Document";openFileDialog2.Filter = "Map Documents (*.mxd)|*.mxd";openFileDialog
27、2.ShowDialog();string sFilePath = openFileDialog2.FileName; if (axMapControl1.CheckMxFile(sFilePath)) {axMapControl1.LoadMxFile(sFilePath, 0,Type.Missing);} else {MessageBox.Show(sFilePath + &quo
28、t; is not a valid ArcMap document"); return;} },,在ArcMap中使用的地圖文檔對象為MxDocument,其主要接口是IMxDocument;在使用控件開發(fā)的獨立應(yīng)用程序中,使用的地圖文檔對象為MapDocument ,其主要接口是IMapDocument。IMapDocument接口定義了操作和管理文檔對象的方法和屬性。MapDocument類
29、能夠封裝地圖文檔文件,如mxd、mxt和pmf等,它也可以封裝 一個圖層文件(*.lyr)。使用這個對象可以獲取和更新一個文檔的內(nèi)容,設(shè)置文檔文件的讀、寫屬性,保存一個文檔文件(*.mxd)。,IMxDocument 與IMapDocument,,IApplication的屬性、方法,IMxDocument. ActivatedView與 ActiveView 屬性在ArcMap的布局視圖(layout view)狀態(tài)下,圖形元素可以
30、添加到頁面布局(PageLayout)或焦點地圖(focus Map)的圖形元素容器(graphics container )中;這時, IMxDocument.ActiveView 屬性與IMxDocument.ActivatedView 屬性不同, ActiveView 屬性引用PageLayout 對象, ActivatedView屬性引用焦點地圖對象(如果該地圖對象處于活動狀態(tài)) 。在ArcMap的數(shù)據(jù)視圖(data view
31、)狀態(tài)下, ActiveView 與ActivatedView屬性都引用焦點地圖對象。,IMapDocument m_MapDocument = new MapDocumentClass();private void LoadMapDoc(){ OpenFileDialog openFileDialog2 = new OpenFileDialog();openFileDialog2.Title = &quo
32、t;Open Map Document";openFileDialog2.Filter = "Map Documents (*.mxd)|*.mxd";openFileDialog2.ShowDialog();string sFilePath = openFileDialog2.FileName; If(m_MapDocument.get_IsMapDocument(sFilePath)){
33、 m_MapDocument.Open(sFilePath, ""); axMapControl1.Map = m_MapDocument.get_Map(0); axMapControl1.Refresh(); }},public void Open ( string sDocument, string bsPassword);,public bool get_IsMapDocum
34、ent (string sDocument);,private void SaveDocument(){ if (m_MapDocument.get_IsReadOnly(m_MapDocument.DocumentFilename) == true) { MessageBox.Show("This map document is read only!");return;}m_MapDocu
35、ment.Save(m_MapDocument.UsesRelativePaths,true);MessageBox.Show("Changes saved successfully!");},public void Save ( bool bUseRelativePaths, bool bCreateThumnbail);,,3.1.3 鼠標與控件的交互,用鼠標和地圖控件進行交互是最常用的操作,例如改變
36、地圖顯示范圍、移動地圖,在控件上繪制幾何圖形等。,使用鼠標拖曳確定地圖顯示的范圍(拉框放大),private void axMapControl1_OnMouseDown (object sender, ESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseDownEvent e){ //改變地圖控件顯示范圍為當前拖曳的區(qū)域 axMapControl1.Extent = a
37、xMapControl1.TrackRectangle(); //刷新地圖axMapControl1.Refresh(esriViewDrawPhase.esriViewGeography, null, null);},public void Refresh ( esriViewDrawPhase phase, object layerOrElement, &
38、#160; object envelope );,移動、旋轉(zhuǎn)地圖,在 MapControl中有一種更簡單便利的方法pan()來移動其中的地圖。下面的方法使用在MapControl控件的OnMoseDown事件中: axMapControl1.pan(); axMapControl1.Rotation = 45;,在 MapControl控件中繪制圖形,MapControl控件提供了直接在控件上
39、繪制圖形和文字的方法DrawShape與DrawText,這兩種繪制方法繪制的圖形都是緩存(cache),而不能真正保存,一旦窗口重繪,這些圖形就將消失。,private void axMapControl1_OnMouseDown (object sender, ESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseDownEvent e){//產(chǎn)生拖曳多邊形,并繪制
40、IGeometry pGeom = axMapControl1.TrackPolygon();DrawMapShape(pGeom); //刷新地圖//axMapControl1.Refresh(esriViewDrawPhase.esriViewGeography, null, null);},private void DrawMapShape (IGeometry pGeom) {IRgbColor
41、 pColor;pColor = new RgbColorClass();pColor.Red = 220;pColor.Green = 112;pColor.Blue = 60;//新建一個繪制圖形的填充符號ISimpleFillSymbol pFillsyl;pFillsyl = new SimpleFillSymbolClass();pFillsyl.Color = pColor;object
42、oFillsyl = pFillsyl;axMapControl1.DrawShape(pGeom, ref oFillsyl); },public void DrawShape ( IGeometry Shape, ref object symbol );,3.1.4 數(shù)據(jù)選擇,在MapControl控件中用戶可以很方便地使用SelectByShape方法來構(gòu)造一個基于Map的選
43、擇集。SelectByShape()方法選擇控件中所有圖層上處于選擇范圍內(nèi)的要素,并將其設(shè)置為一個選擇集。,private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e){//產(chǎn)生拖曳多邊形IGeometry pGeom = axMapControl1.TrackPolygon(); axMapCo
44、ntrol1.Map.SelectByShape(pGeom, null, false); axMapControl1. Refresh(esriViewDrawPhase.esriViewGeoSelection,null,null); },,清除選擇集的方法 axMapControl1.Map.Clearselection(); axMapControl1.
45、ActiveView.Refresh();,3.1.5 實現(xiàn)鷹眼功能,,這個例子中有兩個AxMapControl控件:主控件axMapControl1和鷹眼控件axMapControl2. 要實現(xiàn)鷹眼功能,關(guān)鍵有兩點:一是如何讓兩個控件顯示的數(shù)據(jù)保持一致,另一點是如何繪制鷹眼控件中的顯示方框。,兩個控件的數(shù)據(jù)共享,private void axMapControl1_OnMapReplaced (object sender, IMap
46、ControlEvents2_OnMapReplacedEvent e){ IMap pMap;pMap = axMapControl1.Map; int i ;for( i = 0; i<= pMap.LayerCount - 1;i++) { axMapControl2.Map.AddLayer(pMap.get_Layer(i)); } },繪制鷹眼控件中的顯示
47、方框,主窗體視圖的范圍發(fā)生變化后,會觸發(fā)控件的OnExtentUpdated事件,繪制方框的方法就在這個事件中進行:private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e) { ……. },3.2 PageLayoutControl控件,PageLayo
48、utControl對應(yīng)于ArcMap中的布局視圖(Layout View),它封裝了PageLayout對象,提供了在布局視圖中控制地圖元素的屬性和方法。 PageLayoutControl控件用于制圖,它可以方便地操作各種元素對象,以產(chǎn)生一幅制作精美的地圖對象。與MapControl控件相似,PageLayoutControl控件并不僅僅只是包含了一個PageLayout對象,它也擁有許多附加的事件、屬性和方法。,頁面布局(通常簡稱
49、為布局)是在頁面上編排和組織的地圖元素的集合,旨在用于地圖的排版設(shè)計、打印等。布局中排布的常見地圖元素包括一個或多個數(shù)據(jù)框(每個數(shù)據(jù)框都含有一組有序的地圖圖層)、比例尺、指北針、地圖標題、描述性文本和符號圖例。打印機、頁面布局、大小、單位,,,數(shù)據(jù)驅(qū)動頁面根據(jù)地圖文檔的某個要素圖層或規(guī)則格網(wǎng)將地圖分割為多個部分,然后為每個部分生成一個相應(yīng)的頁面。,創(chuàng)建數(shù)據(jù)驅(qū)動頁面,,,PageLayoutControl控件同樣實現(xiàn)了多個接口IPa
50、geLayoutControlDefaultIPageLayoutControlIPageLayoutControl2IPageLayoutControl3 (New in 9.2)IPageLayoutControlEvents,,,IPageLayoutControl3,,Samples:PageLayoutControlLoadMapDocumentPageLayoutControlCopyFocusMapPageL
51、ayoutControlOverviewPageLayoutControlPageAppearancePageLayoutControlPrintPreviewPageLayoutControlPrinting,3.2.1 PageLayoutControl操作 MXD文件,在AxPageLayoutControl控件對MXD文件的操作,與MapControl類似。public void LoadMxFile ( string
52、 fileName, object password );,下面是在PageLayout控件中打開一個MXD文件的方法:,private void OpenMapDocument(){IMapDocument m_MapDocument = new MapDocumentClass();OpenFileDialog openFileDialog1;openFileDialog1 = new OpenFileDi
53、alog();openFileDialog1.Title = "Open Map Document";openFileDialog1.Filter = "Map Documents (*.mxd)|*.mxd";openFileDialog1.ShowDialog();string sFilePath = openFileDialog1.FileName; m_Ma
54、pDocument.Open(sFilePath, "");axPageLayoutControl1.PageLayout = m_MapDocument.PageLayout;axPageLayoutControl1.Refresh();},private void SaveDocument() { //Check that the document is not read only. if
55、 (m_MapDocument.get_IsReadOnly(m_MapDocument.DocumentFilename) == true) { MessageBox.Show("This map document is read only!"); return; } //Save with the current relative path setting. m_M
56、apDocument.Save(m_MapDocument.UsesRelativePaths, true); MessageBox.Show("Changes saved successfully!"); },private void cmdSaveAs_Click(object sender, System.EventArgs e){ //Open a file dialog for saving ma
57、p documents. saveFileDialog1.Title = "Save Map Document As"; saveFileDialog1.Filter = "Map Documents (*.mxd)|*.mxd"; saveFileDialog1.ShowDialog(); string sFilePath = saveFileDialog1.FileName;
58、 if (sFilePath == “”) return; if (sFilePath == m_MapDocument.DocumentFilename) { //Save changes to the current document. SaveDocument(); } else { //SaveAs a new document with relative pat
59、hs. m_MapDocument.SaveAs (sFilePath, true, true); //Open the document. OpenDocument((sFilePath)); MessageBox.Show("Document saved successfully!"); } },3.2.2
60、PageLayout與MapControl聯(lián)動,在ArcMap程序中,數(shù)據(jù)視圖和布局視圖中的數(shù)據(jù)改變是實時互動的。在使用ArcObjects控件開發(fā)的獨立程序中實現(xiàn)這個功能,由于MapControl、 PageLayoutControl兩個控件本身并不能自動實時互動,用戶只能夠通過拷貝的方法來實時傳遞兩個控件的內(nèi)容。Sample: MapAndPageLayoutSynchApp,3.3 TOCControl控件,TOCContr
61、ol控件概述ITOCControl與ITOCControl2ITOCControlEvents應(yīng)用開發(fā)實例,3.3.1 TOCControl控件概述,TOCControl要與一個“伙伴控件” 協(xié)同工作?!盎锇榭丶笨梢允荕apControl、PageLayoutControl、SceneControl或GlobeControl。TOCControl用“伙伴控件”來顯示其地圖、圖層和符號體系內(nèi)容的一個交互式樹視圖,并保持其內(nèi)容
62、與“伙伴控件”同步。例如,如果 “伙伴控件”是一個MapControl,而且從該MapControl中刪除了一個圖層,則該圖層也會從TOCControl中刪除。同樣地,如果終端用戶與TOCControl交互并取消了某個圖層的Visibility復(fù)選框,則該圖層在MapControl中不再可見。,TOCControl的“伙伴控件”可以在設(shè)計時通過TOCControl屬性頁設(shè)置或用SetBuddyControl方法通過編程設(shè)置。TOCCo
63、ntrol的主要接口有:ITOCControl 、 ITOCControl 2、ITOCControlEvents,3.3.1.1 ITOCControl與ITOCControl2,ITOCControl接口是任何與TOCControl有關(guān)的任務(wù)的出發(fā)點,如設(shè)置控件的外觀,設(shè)置伙伴控件,管理圖層的可見性和標簽的編輯。,ITOCControl,LabelEdit 、 LayerVisibilityEdit :Label 、Visibil
64、ity editing state. esriTOCControlAutomaticesriTOCControlManual,在C#.NET環(huán)境中,當查詢接口到ITOCControl 或ITOCControl2時,必須使用Object屬性或者容器指定代碼。 ITOCControl pTOCControl;pTOCControl = axTOCControl1.Object as ITOCControl; 或pTOCC
65、ontrol = axTOCControl1. GetOcx() as ITOCControl;,public void HitTest (int X, int Y, ref esriTOCControlItem ItemType, ref IBasicMap BasicMap, ref ILayer Layer, ref object Unk, ref object Data );用于獲取用戶在TOCControl中點擊的信相關(guān)息。
66、ItemType:TOCControl中項的類型,如none、map、layer、heading 或legend class.BasicMap:指定地圖 對象。Layer:ILayer 對象。Unk :ILegendGroup(圖例組,一個圖層可以有多種符號化方案)對象。Data:用戶點擊的圖例組中某個圖例的索引號(長整型);聯(lián)合使用圖例組Unk和這個索引號,可以獲得用戶點擊的圖例(legend class);如果這個索引號為-
67、1,表明用戶點擊的是圖例中的標題頭。,IBasicMap map = new MapClass();ILayer layer = new FeatureLayerClass();object other = new object();object index = new object();esriTOCControlItem item = new esriTOCControlItem();axTOCControl1.HitTe
68、st(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);if (e.button == 1) //判斷用戶是否按了鼠標左鍵 { if (layer == null) return; IFeatureLayer featureLayer = layer as IFeatureLayer; if (featureLayer =
69、= null) return; IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer) featureLayer;,ILegendClass legendClass = new LegendClassClass();ISymbol symbol = null;if (other is ILegendGroup && (int)index != -1)
70、 { legendClass = ((ILegendGroup)other).get_Class((int)index); symbol = legendClass.Symbol; }if (symbol == null) return; symbol = GetSymbolByControl(symbol);//彈出符號選擇對話框讓用戶選擇新的符號if (symbol == null) ret
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東理工大學-山東理工大學-研究生院
- 山東理工大學-研究生院
- - 長春理工大學研究生院
- 南京理工大學研究生院
- 華東理工大學研究生院
- 第2章-蘭州理工大學研究生院蘭州理工大學研究生部,蘭州
- 多核處理器-蘭州理工大學研究生院蘭州理工大學研
- 東華理工大學研究生院課程重修單
- 昆明理工大學研究生院黨委編
- 北京理工大學-成都體育學院研究生院
- 五、教學大綱 - 北京理工大學研究生院
- 據(jù)浙江理工大學研究生院消息,2016年度浙江理工大學考研專業(yè)
- 孟德爾與現(xiàn)代遺傳學-蘭州理工大學研究生院蘭州理工大學
- 推薦免試碩士研究生復(fù)試政審表 - 東華理工大學研究生院
- 第一章熱力學基礎(chǔ)-蘭州理工大學研究生院蘭州理工大學研究
- 附件2導(dǎo)師簡介.doc-北京理工大學研究生院
- 江西理工大學研究生復(fù)試錄取政審表
- 碩士學位論文寫作及答辯指南 - 山東理工大學-研究生院
- 北京理工大學研究生院關(guān)于全面修訂研究生培養(yǎng)方案的指導(dǎo)意見
- 專業(yè)課上課記錄表-安徽理工大學研究生院網(wǎng)站
評論
0/150
提交評論