C#開發(fā)MapInfo教程1-_第1頁
C#開發(fā)MapInfo教程1-_第2頁
C#開發(fā)MapInfo教程1-_第3頁
C#開發(fā)MapInfo教程1-_第4頁
C#開發(fā)MapInfo教程1-_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C#開發(fā)GIS應(yīng)用簡(jiǎn)明教程2009-11-15 來自:CSDN Blog 字體大小:【大中小】摘要:這篇是C#開發(fā)GIS應(yīng)用簡(jiǎn)明教程,從工具開始將其,包括設(shè)計(jì)窗體、創(chuàng)建永久圖層等等。希望本文能對(duì)大家有所幫助。 C#開發(fā)GIS,這里將介紹MapX為開發(fā)人員提供一系列的工具,包括C#對(duì)MAPX圖元的編程技術(shù)。這些工具的使用,可以通過MapX的幫助文檔中查到。1.工具(ToolConstantsMapX為開發(fā)人員提供一系列的工具,這些工具的作用各有不同,我們通過開發(fā)一個(gè)應(yīng)用程序來了解這些工具的作用,至于這些工具的具體說明,可以在MapX的幫助文檔中,通過查找Available Standard To

2、ols 看到相應(yīng)的解釋.一些MapX的相關(guān)資料也有介紹.在.NET編程環(huán)境中新建一個(gè)C#的WindeosApplication(Windows應(yīng)用程序項(xiàng)目,然后在菜單中選擇”項(xiàng)目/添加引用”,打開如下圖的窗口,在窗口中選擇COM標(biāo)簽,在組件名稱列表中雙擊MapInfo MapX V5.單擊確認(rèn)按鈕,將Map5控件加入到.Net的工具箱中.接著,將MapInfo MapX V5 控件畫到窗體上,再在窗體上畫一個(gè)ComboBox控件comboBo x1.如下圖:雙擊設(shè)計(jì)窗體,編寫Form1_Load代碼如下:1.private void Form1_Load(object sender, Syst

3、em.EventArgs e2.3.ArrayList ToolsList=new ArrayList(;4.ToolsList.Add(MapXLib.ToolConstants.miArrowTool;5.ToolsList.Add(MapXLib.ToolConstants.miCenterTool;6.ToolsList.Add(MapXLib.ToolConstants.miLabelTool;7.ToolsList.Add(MapXLib.ToolConstants.miPanTool;8.ToolsList.Add(MapXLib.ToolConstants.miPolygonS

4、electTool;9.ToolsList.Add(MapXLib.ToolConstants.miRadiusSelectTool;10.ToolsList.Add(MapXLib.ToolConstants.miSymbolTool;11.ToolsList.Add(MapXLib.ToolConstants.miTextTool;12.ToolsList.Add(MapXLib.ToolConstants.miZoomInTool;13.ToolsList.Add(MapXLib.ToolConstants.miZoomOutTool;boBox1.DataSource=ToolsLis

5、t;15.以上代碼通過一個(gè)數(shù)組ToolsList,將MapXLib的工具加入到comboBox1中.MapX還有一些其它的工具,它們的作用是往地圖上加上點(diǎn),線,多邊型和圓.因?yàn)檫@些工具要求有操作圖層,一并在介紹圖層的時(shí)候介紹.關(guān)于ArrayList的用法,請(qǐng)參考C#的有關(guān)資料.接著,雙擊comboBox1,并編寫代碼如下1.private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e2.3.axMap1.CurrentTool=(MapXLib.ToolConstantscomboBox1.Selec

6、tedItem;4.應(yīng)注意,在C#中必須要顯式地把comboBox1的選擇項(xiàng)目SelectedItem(數(shù)據(jù)類型為obje ct轉(zhuǎn)換為MapXLib.ToolConstants.因?yàn)門oolConstants是MapX自己定義的一個(gè)枚舉數(shù)據(jù)類型,C#不能自動(dòng)完成這種枚舉成員變量到object的數(shù)據(jù)轉(zhuǎn)換.編譯執(zhí)行程序,從comboBox1中選擇不同的工具,在地圖上進(jìn)行操作,你可以了解到MapX 工具集的強(qiáng)大功能.實(shí)際上,MapX提供的工具集就好像Photoshop,AutoCAD的工具欄一樣,為你提供了一些控制地圖的工具.但是,在開發(fā)GIS的時(shí)候,這些工具是不能完全滿足要求的.所以,還應(yīng)該學(xué)會(huì)自

7、定義工具.下面,通過一個(gè)在地圖上測(cè)距的例子,來介紹一下如何在C#下自定義MapX工具如前所述建立一個(gè)C#的Windows應(yīng)用程序并將Mapinfo MapX V5 控件加到窗體上.并加入一個(gè)Button控件button1.將button1的Text屬性改為測(cè)距,再在窗口中放上兩個(gè)Lab el控件label1,label2,將它們的Text屬性設(shè)置為空字符串,如下圖:雙擊設(shè)計(jì)窗體,編寫Form1_Load代碼如下:1.private void Form1_Load(object sender, System.EventArgs e2.3.axMap1.CreateCustomTool(100,M

8、apXLib.ToolTypeConstants.miToolTypePoly,4.MapXLib.CursorConstants.miCrossCursor,null,null,null;5.在加載窗口的時(shí)候,我們定義了一個(gè)工具.它的編號(hào)是100(不要和MapX本身的工具編號(hào)重復(fù),它的類型是一個(gè)多義線,采用十字光標(biāo).關(guān)于此函數(shù)的用法,建議查看MapX的開發(fā)手冊(cè)和相關(guān)資料.現(xiàn)在我們定義了一個(gè)編號(hào)為100的工具,可以在程序中使用它了.雙擊設(shè)計(jì)窗體中的but ton1,編寫它的Click事件處理代碼如下:1.private void button1_Click(object sender, Sys

9、tem.EventArgs e2.3.axMap1.CurrentTool=(MapXLib.ToolConstants100;4.現(xiàn)在編譯運(yùn)行,單擊button1,就可以在地圖上使用這個(gè)工具了.但是還有一部分重要的代碼沒有完成:測(cè)距!完成測(cè)距功能的代碼在C#使用MapX開發(fā)GIS中非常具有代表性,也比較有難度.我在首次使用C#+MapX開發(fā)GIS的時(shí)候,被這個(gè)問題困擾了很久.項(xiàng)目經(jīng)理也來研究,過兩天說有結(jié)果了,但他給出的例子根本就行不通.當(dāng)然,會(huì)了就不難了.其實(shí),也很簡(jiǎn)單.首先,在窗口類中聲明兩個(gè)私有全局變量以保存測(cè)出的距離和總距,注意聲明代碼的位置:1.public class Form1

10、 : System.Windows.Forms.Form2.3.private AxMapXLib.AxMap axMap1;4.private System.Windows.Forms.Button button1;5.private System.Windows.Forms.Label label1;6.private System.Windows.Forms.Label label2;7./8./ 必需的設(shè)計(jì)器變量。9./10.private System.ComponentModel.Container components = null;11.private double Dis=0

11、,DisSum=0;12.13.現(xiàn)在來編寫工具的事件.注意,在MapX畫多義線的時(shí)候,它觸發(fā)消息的方式和一般的工具是不同的,首先,它并不是用鼠標(biāo)一點(diǎn)擊就完成了的,還可以繼續(xù)畫下去,所以,不應(yīng)該在M apX控件的ToolUsed事件中編寫,而應(yīng)該在PolyToolUsed事件中實(shí)現(xiàn)測(cè)距.代碼如下:1.private void axMap1_PolyToolUsed(object sender, AxMapXLib.CMapXEvents_PolyToolUsedEvent e2.3.MapXLib.PointsClass pts=new MapXLib.PointsClass(;4.switch

12、(e.flags5.6.case (intMapXLib.ToolFlagConstants.miToolInProgress:7. pts=(MapXLib.PointsClasse.points;8.Dis=axMap1.Distance(pts._Item(pts.Count-1.X,9.pts._Item(pts.Count-1.Y,10.pts._Item(pts.Count.X,11.pts._Item(pts.Count.Y;12. DisSum+=Dis;13.break;14.default:15. Dis=0;16. DisSum=0;17.break;18.19.labe

13、l1.Text=距離:+Dis.ToString(#.00;20.label2.Text=總距+DisSum.ToString(#.00;21.這段代碼雖短.但要注意的地方很多.首先,定義一個(gè)MapXLib.PointsClass類型的變量pts,注意,是PointsClass,不是Poin tClass.前者是點(diǎn)集,后者是點(diǎn).為什么要增加那么一個(gè)變量呢?因?yàn)镸apX的PolyToolUsed 事件的返回參數(shù)e的成員points不是MapXLib.PointsClass類型,而是object.類型.所以需要這么一個(gè)變量來轉(zhuǎn)換它,當(dāng)然,你也可以在程序使用pts的地方直接使用(MapXLib.Po

14、in tsClasse.points,但那樣一來程序就比較難懂了;其次,要判斷事件的標(biāo)識(shí)e.flags的值,它指出工具當(dāng)前的狀態(tài),是剛開始畫多義線呢,還是正在畫多義線,或者已經(jīng)結(jié)束了,或者結(jié)束退出.我們只要在畫的時(shí)候測(cè)距就可以了.其它時(shí)候?qū)⒕嚯x和總距都設(shè)置為0;接著,還要注意的是e.points的點(diǎn)數(shù)據(jù)保存方式,e.points首先是一個(gè)object,當(dāng)在畫多義線的時(shí)候,它被初試化為一個(gè)MapXLib.PointsClass的變量,并以二維數(shù)組的方式保存點(diǎn)集.這個(gè)數(shù)組是從1開始的,而不是從0開始的.它保存了多義線上每個(gè)轉(zhuǎn)折點(diǎn)的坐標(biāo),鼠標(biāo)每點(diǎn)一下,就增加一個(gè)新的數(shù)據(jù)到點(diǎn)集,我們計(jì)算最后一條直線長(zhǎng)

15、度,應(yīng)該從這個(gè)數(shù)組的末尾往前取.計(jì)算好距離以后再加入到總距中.許多測(cè)距的程序例子都要做一個(gè)循環(huán),其實(shí)是不必要的.最后,請(qǐng)注意數(shù)字轉(zhuǎn)換到字符串的格式問題.在這個(gè)例子中我們保留兩位小數(shù).補(bǔ)充一點(diǎn),因?yàn)闆]有設(shè)置地圖的地理坐標(biāo)系統(tǒng),所以測(cè)出來的距離單位是英里,如果要改為公里,把MapX控件的MapUnit屬性改為miUnitKilometer就可以了.要提高測(cè)量精度,除了可以通過轉(zhuǎn)換格式的時(shí)候增加小數(shù)位,還應(yīng)該注意到地圖的測(cè)繪精度.否則,再多的小數(shù)位也是沒有意義的.1.建立一個(gè)應(yīng)用程序,加入MapX控件和一個(gè)ComboBox控件,兩個(gè):Label控件,在ComboBox 中加入第一個(gè)例子中的所有工具和

16、測(cè)距工具,在ComboBox中選擇測(cè)距工具時(shí)實(shí)現(xiàn)測(cè)距功能.2.將測(cè)距工具的光標(biāo)改成箭頭光標(biāo).并以米為單位顯示測(cè)距數(shù)據(jù).3.圖層和圖元(Layers and Features有關(guān)圖層和圖元的概念,請(qǐng)參照相關(guān)資料.圖層的應(yīng)用分為幾個(gè)方面,我們分別加以介紹.1圖層的創(chuàng)建:創(chuàng)建永久圖層:在C#中,使用以下方法創(chuàng)建永久圖層:1.MapXLib.Layer lyr;2.lyr=axMap1.Layers.CreateLayer(MyLayer,D:MapTestMyLayer.Tab,0,32,axMap1.DisplayCoordSys;當(dāng)執(zhí)行這兩句程序時(shí),在指定的路徑生成了一系列文件.它們是:MyLa

17、yer.Dat:圖層的數(shù)據(jù)文件,它保存的是圖層的數(shù)據(jù)庫數(shù)據(jù);MyLayer.ID:圖層數(shù)據(jù)的唯一的,自動(dòng)生成的編碼,用以區(qū)分不同的圖元;MyLayer.IND:圖層數(shù)據(jù)的索引文件,以實(shí)現(xiàn)圖層上圖元的快速查找;MyLaer.MAP:圖層上圖元的圖形數(shù)據(jù);MyLaer.TAB:這是一個(gè)文本文件,它的作用是將圖層的有關(guān)信息保存起來,供GST地圖文件或其它程序調(diào)用圖層.用記事本打開MyLayer.TAB文件,看到如下內(nèi)容:1.!table2.!version 4503.!charset WindowsSimpChinese4.Definition Table5.Description MyLayer6

18、.Type Native charset WindowsSimpChinese7.Fields 18.GEONAME char (32 Index 1 ;第一行總是!table,說明這是一個(gè)圖層表的文件;第二行指出圖層文件的版本號(hào),MapInfo MapX 5.0生成的圖層版本號(hào)是450;第三行指出生成圖層的操作系統(tǒng);接著是對(duì)圖層的定義段:首先指出圖層的描述,就是我們上面程序代碼中的Mylayer.接著說明了字符集類型是簡(jiǎn)體中文;然后指出表格中只有一個(gè)字段,這個(gè)字段的名稱是GEONAME,是長(zhǎng)度為32的字符類型字段,在表中的列索引為1.2添加現(xiàn)有的圖層:添加現(xiàn)有圖層的方法和一般的程序語言沒有很

19、大的區(qū)別,我們?cè)诋?dāng)前圖層上添加剛才創(chuàng)建的永久圖層,程序代碼如下:1.MapXLib.LayerInfo li;2.li=new MapXLib.LayerInfoClass(;3.li.Type=MapXLib.LayerInfoTypeConstants.miLayerInfoTypeTab;4.li.AddParameter(FileSpec,D:MapTestMyLayer.tab;5.li.AddParameter(Visible,false;6.li.AddParameter(AutoCreateDataset,true;7.li.AddParameter(DatasetName,M

20、yLayer;8.axMap1.Layers.Add(li,0;9.axMap1.Layers.LayersDlg(,;10.axMap1.SaveMapAsGeoset(測(cè)試,D:MapTestMyMap.GST;在程序的最后,我們顯示了圖層信息對(duì)話框,以觀察圖層是否已經(jīng)添加到當(dāng)前的地圖中.可以看到,地圖中添加了我們創(chuàng)建的圖層MyLayer.放在第0層.然后,將地圖保存在一個(gè)MyMap.GST的地圖文件中,這個(gè)地圖的標(biāo)題是測(cè)試.3移除圖層:好,接著我們上面做的工作,將工程的axMap1的GeoSet屬性設(shè)置為剛剛生成的地圖文件: D:MapTestMyMap.GST.現(xiàn)在我們將MyLayer

21、從地圖中移除.添加一個(gè)按鈕,在按鈕的Click事件中編寫如下代碼:1.axMap1.Layers.LayersDlg(,;2.axMap1.Layers.Remove(1;3.axMap1.Layers.LayersDlg(,;我們使用兩次顯示圖層對(duì)話框的方式查看程序的效果,應(yīng)該注意的是在Remove第0層的時(shí)候使用的是Remove(1,如果不清楚圖層的位置,就要作一個(gè)循環(huán),將圖層的位置取出來再移除,如下:1.int lyrind=0;2.axMap1.Layers.LayersDlg(,;3.for( int i=1;i4.5.if (axMap1.Layersi._Name.Trim(=M

22、yLayer6.7. lyrind=i;8.break;9.10.11.axMap1.Layers.Remove(lyrind;12.axMap1.Layers.LayersDlg(,;移除操作只在內(nèi)存中進(jìn)行,也就是說,程序并不刪除任何文件,也沒有將圖層真正地從地圖集合中去掉,當(dāng)程序重新啟動(dòng)的時(shí)候,MyLayer圖層仍然在地圖中.3移除所有圖層:使用axMap1.Layers.RemoveAll(;就可以移除所有圖層,用法和Remove相似.4圖層定位:和其它編程語言一樣,使用axMap1.Move(1,2函數(shù)就可以將圖層的位置改變.5創(chuàng)建臨時(shí)圖層臨時(shí)圖層和永久圖層不同,它只存放在內(nèi)存中,當(dāng)關(guān)

23、閉程序以后該圖層將不存在.在這里我們將使用LayerInfo對(duì)象來創(chuàng)建臨時(shí)圖層,這和傳統(tǒng)的MAPX程序相近,但是引入了C#編程的一些特色:1.MapXLib.LayerInfoClass li=new MapXLib.LayerInfoClass(;2.MapXLib.Features ftrs=null;3.MapXLib.FieldsClass flds=new MapXLib.FieldsClass(;4.MapXLib.Fields Myflds=null;5.MapXLib.Dataset dts=null;6.flds.Add(State,State_Name,7.MapXLib.

24、AggregationFunctionConstants.miAggregationSum,8.MapXLib.FieldTypeConstants.miTypeString;9.dts=axMap1.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer,10.axMap1.Layers._Item(1,MyLayer,0,0,0,flds,false;11.Myflds=dts.Fields;12.ftrs=axMap1.Layers._Item(USA.Selection.Clone(;13.li.Type=MapXLib.Lay

25、erInfoTypeConstants.miLayerInfoTypeTemp;14.li.AddParameter(Name,USA Temp Layer;15.li.AddParameter(Fields,Myflds;16.li.AddParameter(Features,ftrs;17.axMap1.Layers.Add(li,1;18.axMap1.Layers.LayersDlg(,;這段程序有兩個(gè)關(guān)鍵的地方:一個(gè)是在C#中DataSets.Add的用法,在許多編程語言中,都可以使用空的參數(shù)或者干脆不用參數(shù)來調(diào)用這個(gè)函數(shù),但是在C#中是不行的,必須8個(gè)參數(shù)全部指定.而且,還應(yīng)該事先

26、初始化Fields參數(shù).這個(gè)函數(shù)的使用涉及到許多方面的知識(shí),包括對(duì)MAPX相關(guān)概念的理解和C#編程的認(rèn)識(shí),是一個(gè)很重要,也比較難掌握的技術(shù).后面的章節(jié)中我們還會(huì)作進(jìn)一步的探討.另一個(gè)是li.AddParameter和li.Type的配合使用問題,這在許多的MAPX書籍中都有論述,此處不再重復(fù).以上程序最好能自己多琢磨琢磨.才能更好地掌握C#開發(fā)GIS的要領(lǐng).6縮放圖層:所謂的縮放圖層,并不是指將單個(gè)圖層縮放.而是指定圖層的可見范圍比例,例如,設(shè)置一個(gè)圖層在縮小顯示大于5英里的時(shí)候隱藏.小于5英里的時(shí)候顯示.和其它編程語言一樣,只要設(shè)置Layer的ZoomMin和ZoomMax就可以了.7顯示整

27、個(gè)圖層:這里要提及的一個(gè)技巧是在C#下面怎樣顯示整個(gè)圖層.眾所周知,在VB下面只要:Map1.Bounds = Map1.Layers(USA.Bounds一句程序就可以輕松實(shí)現(xiàn).但是要是在C#中這樣寫的話,百分百會(huì)出錯(cuò).其實(shí),這里有一個(gè)小小的技巧,聰明的你一定能看出來:axMap1.CtlBounds=axMap1.Layers._Item(USA.Bounds;8在圖層上繪制永久圖形:我們?cè)诮榻B工具的時(shí)候,有一些工具沒有介紹,這些工具其實(shí)是用來在圖層上創(chuàng)建永久圖形對(duì)象的(圖元.當(dāng)在圖層上繪制了圖形以后,這些圖形將以數(shù)據(jù)記錄的形式保存在圖層表中,也就是創(chuàng)建了一個(gè)圖元.如果不想保存圖元,可以在

28、臨時(shí)圖層里繪制.1.axMap1.Layers._Item(USA Temp Layer.Editable=true;2.axMap1.Layers.InsertionLayer=axMap1.Layers._Item(USA Temp Layer;3.axMap1.CurrentTool=MapXLib.ToolConstants.miAddLineTool;上面的程序使用了畫線的工具,在地圖上拖動(dòng)鼠標(biāo)就可以在臨時(shí)圖層上畫線了.這些工具使用的前提是必須指定axMap1的插入圖層(InsertionLayer.才能在圖層表中插入數(shù)據(jù).關(guān)于圖層的關(guān)鍵技術(shù)就介紹到這里,掌握了這些技術(shù)以后,在作進(jìn)一

29、步的研究時(shí),例如動(dòng)畫圖層和繪制圖層的開發(fā),遇到的困難應(yīng)該不大.下面我們介紹C#對(duì)MAPX圖元的編程技術(shù).9在圖層上創(chuàng)建圖元:根據(jù)MAP Info提供的MapX 5.0開發(fā)手冊(cè),創(chuàng)建圖元有兩種方法,用兩段代碼說明這兩種代碼在C#的實(shí)現(xiàn)方法:第一種實(shí)現(xiàn)方法:直接使用Feature類創(chuàng)建圖元1.MapXLib.Style sty=new MapXLib.StyleClass(;2.MapXLib.Feature ftr=new MapXLib.FeatureClass(;3.ftr.Attach(axMap1.GetOcx(;4.ftr.Type=MapXLib.FeatureTypeConstan

30、ts.miFeatureTypeText;5.sty.TextFontColor=255;6.sty.TextFont.Size=12;7.ftr.Style=sty;8.ftr.Caption=New Feature;9.ftr.Point.Set(axMap1.CenterX,axMap1.CenterY;10.axMap1.Layers._Item(US Top 20 Cities.Style=sty;11.ftr=axMap1.Layers._Item(US Top 20 Cities.AddFeature(ftr,new MapXLib.RowValuesClass(;12.ftr.

31、Update(ftr,new MapXLib.RowValuesClass(;有幾個(gè)要注意的地方:ftr.Attach(axMap1.GetOcx(;如果在VB6下,這句程序應(yīng)該是這樣的:ftr.Attach Map1從這里可以看到在C#中因?yàn)閲?yán)格的類型管理所帶來的一些變化.如果不進(jìn)行GetOcx(的轉(zhuǎn)換,即使在VB.Net下也是錯(cuò)誤的.ftr=axMap1.Layers._Item(US Top 20 Cities.AddFeature(ftr,new MapXLib.RowV aluesClass(;我們?cè)谶@個(gè)程序中加入了一行空的數(shù)據(jù),這也就代表著我們加入的圖元不包含任何數(shù)據(jù)信息.這是為了

32、在介紹圖元的時(shí)候方便大家掌握,并不意味著這樣增加圖元就不能將數(shù)據(jù)保存進(jìn)去,實(shí)際上,通過設(shè)置一個(gè)新的RowValues變量,是可以將數(shù)據(jù)信息保存到圖元中的.我們將在后面的章節(jié)中介紹如何將數(shù)據(jù)保存在圖元中.ftr.Update(ftr,new MapXLib.RowValuesClass(;這句程序的作用是將創(chuàng)建的圖元保存到圖層表中,這種保存是永久保存的.除非是在臨時(shí)圖層上增加的圖元,否則下次打開地圖文件的時(shí)候,將看到創(chuàng)建的圖元仍然保留在地圖上.因此,在對(duì)圖元操作之前請(qǐng)備份好地圖文件,避免不必要的損失.另外,關(guān)于圖元的類型(Type和風(fēng)格(Style,應(yīng)該和其所在的圖層相對(duì)應(yīng),比如上面程序中關(guān)于T

33、ype和Style的設(shè)置,都是和US Top 20 Cities 圖層的類型對(duì)應(yīng)的.有關(guān)類型和風(fēng)格的設(shè)置,請(qǐng)查閱相關(guān)手冊(cè).第二種實(shí)現(xiàn)方法:使用FeatureFactory創(chuàng)建圖元1.MapXLib.Feature ftr=new MapXLib.FeatureClass(;2.MapXLib.Point p=new MapXLib.PointClass(;3.p.Set(axMap1.CenterX,axMap1.CenterY;4. 5. 6. 7. 8. ftr=axMap1.Layers._Item(US Top 20 Cities .AddFeature(axMap1.FeatureFactory.CreateText (p,New Feature,MapXLib.PositionConstants.miPositionCC, new MapXLib.StyleClass(, new MapXLib.RowValuesClass(; 這段代碼和上面和第一種實(shí)現(xiàn)方法類似,我們?cè)谶@里不再設(shè)置圖元的 Type 和 Style. FeatureFactory 類似于設(shè)計(jì)模式中的 Factory 模式,從它可以產(chǎn)生各種類型的圖元,這 個(gè)過程相當(dāng)于設(shè)置了圖元的 Type. 10查找圖元: 查找圖元是很簡(jiǎn)單的,可以用下邊的代碼實(shí)現(xiàn): 1. MapXLib

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論