日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

發布時間:2024/9/5 windows 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

Dixon 原文? 用ArcGIS Engine、VS .NET和Windows控件開發GIS應用

此過程說明適合那些使用.NET建立和部署應用的開發者,它描述了使用ArcGIS控件建立和部署應用的方法和步驟。 你可以在下面的目錄下找到相應的樣例程序: <安裝目錄>/DeveloperKit/Samples/Developer_Guide_Scenarios/ ArcGIS_Engine/Building_an_ArcGIS_Control_Application/Map_Viewer 注:ArcGIS樣例程序不包含在ArcGIS Engine開發工具包“典型”安裝方式中。如果你沒有安裝它們,則可以重新運行開發工具包安裝向導,選擇“定制”或“修改”方式,并選擇軟件開發包下的樣例項進行安裝。 一、項目描述 利用視窗控件建立應用程序的目標是演示并使你熟悉在微軟Visual Studio .NET API中使用標準ArcGIS控件開發和部署GIS應用所需的步聚。本節中使用了Visual Studio .NET開發環境中的MapControl?PageLayoutControlTOCControlToolbarControl等視窗控件。COMJavaC++程序員應該參考如下章節:利用ActiveX建立應用程序利用可視化JavaBeans建立應用程序建立命令行方式的Java應用建立命令行方式的C++應用 本節演示了創建查看ArcMapArcGIS桌面應用圖形文檔的GIS應用程序的步驟。此節包含了以下技術: l????在微軟Visual Studio .NET中加載和嵌入ArcGIS控件。 l????PageLayoutControlMapControl中加載圖形文檔。 l????設置ToolbarControlTOCControl的綁定控件。 l????處理窗口縮放。 l????ToolbarControl添加ArcGIS Engine命令和工具。 l????創建彈出式菜單 l????TOCControl中管理標簽編輯 l????MapControl中繪制圖形。 l????MapControlPageLayoutControlToolbarControl創建定制工具。 l????用戶化ToolbarControl l????Windows操作系統中部署應用。 二、概述 本方案使用微軟Visual Studio .NET開發環境加以實現,并使用了ESRI interop程序集(Interop Assemblies),它服務于被放置在.NET窗體上的、位于.NET?窗體控件(.NET Windows Controls)中的ArcGIS控件,這些程序集在托管的.NET代碼和非托管的COM代碼之間起了橋梁作用。對COM ArcGIS控件(COM ArcGIS Controls)成員的引用都要經過Interop程序集,然后到達實際的COM對象。同樣,也從COM對象經過Interop程序集到達.NET應用程序。每個ArcGIS Engine控件具有方法、屬性與事件,它們能夠被控件嵌入的容器(如,.NET窗體)訪問。每個控件對象及其功能可以與其他ESRI ArcObjects和自定義控件組合使用,創建用戶化的客戶應用程序。 此方案是使用了C#Visual Basic .NET兩種語言創建,但以下技術實現集中傾向于C#方案。許多開發者可能會感覺用Visual Basic .NET更舒服,那是因為他們已經比較熟悉Visual Basic 6.0代碼,然而,對于JavaC++程序員來說,他們將會覺得對C#程序語言的語法更熟悉。無論你使用哪種開發環境,對于使用ArcGIS控件的好壞既依賴于你的編程環境技術,也依賴于你所掌握的ArcObjects技術。 在本方案中,使用ToolbarControlTOCControlPageLayoutControlMapControl來為應用程序提供用戶界面。這些ArcGIS控件與其他ArcObjectsArcGIS Engine命令被開發者一起使用,用來創建一個GIS視窗應用。 三、設計 此方案在設計時,首先強調了ArcGIS?控件如何互相之間進行交互,其次,向開發者解釋說明了ArcGIS?控件對象模型的一部分。 每個.NET ArcGIS Engine控件包含有一套能夠被嵌入其內的窗口即時訪問的屬性頁。這些屬性些為控件屬性和方法的選擇提供了捷徑,并且允許開發者不寫任何代碼即可創建一個應用程序。本方案并沒有使用屬性頁,而是采用寫代碼的方式建立應用程序。關于屬性頁的更進一步的信息,請參考ArcGIS開發幫助(ArcGIS Developer Help) 四、條件需求 要順利地完成以下方案,你需要以下條件(對于部署的需求將在后續的部署章節涉及到): l???????安裝具有授權文件的ArcGIS Engine開發工具包(Developer Kit),使之能夠用于開發。 l???????安裝有微軟Visual Studio .NET 2003開發環境和微軟.NET Framework 1.1及其相應協議。 l???????熟悉微軟Windows操作系統和Microsoft Visual Studio .NET的工作知識,會用C#Visual Basic .NET編程語言。當然,此方案中提供了一些如何在Microsoft Visual Studio .NET中使用ArcGIS控件的信息,但它不能替代對開發環境的培訓。 l???????不需要對ESRI其它軟件有足夠的經驗,但如果以前對ArcObjects有所接觸并對ArcGIS應用(如,ArcCatalogArcMap)有一個基本了解,則對于開發更有利。 l???????訪問來自本方案的樣例數據和代碼,它位于: <安裝目錄>/DeveloperKit/Samples/Developer_Guide_Scenarios/ ArcGIS_Engine/Building_an_ArcGIS_Control_Application/Map_Viewer 本方案中使用到的控件和庫如下:
l???????AxMapControl l???????AxTOCControl
l???????AxPageLayoutControl l???????AxToolbarControl
l???????ESRI.ArcGIS.Carto l???????ESRI.ArcGIS.System
l???????ESRI.ArcGIS.Display l???????ESRI.ArcGIS.SystemUI
l???????ESRI.ArcGIS.Geometry l???????ESRI.ArcGIS.Utility
l???????esriMapControl l???????esriTOCControl
l???????esriPageLayoutControl l???????esriToolbarControl
五、實現 下面的實現過程中提供了你成功完成方案所需所有代碼。假設你對于開發環境已經有了一定的知識,所以下面沒有逐步地詳細介紹如何用Microsoft Visual Studio .NET開發應用。 (一)加載ArcGIS控件 在你為應用程序編寫代碼之前,應該先將應用程序將用到的ArcGIS控件和其他ArcGIS Engine庫引用裝載到開發環境之中。 1.啟動Visual Studio .NET,并從新建項目對話框中創建一個新的Visual C#?“Windows應用程序”項目。???? 2.將項目命名為“Controls”,并選擇位置存取該項目。???? 3.在“工具箱”的“Windows窗體”標簽欄中單擊右鍵,然后從上下文菜單中選擇“添加/移除項(I)…”。???? 4.在“自定義工具箱”中選擇“.NET Framework組件”,并復選“AxMapControl”,“AxPageLayoutControl”,“AxTOCControl”和“AxToolbarControl”,單擊確定按鈕。這樣所選擇的控件將顯示在工具箱Windows窗體標簽欄中。???? 5.單擊項目菜單,并選擇“添加引用(R)…”。???? 6.添加引用對話框中,雙擊“ESRI.ArcGIS.Carto”,“ESRI.ArcGIS.Display”,“ESRI.ArcGIS.Geometry”,“ESRI.ArcGIS.System”,“ESRI.ArcGIS.SystemUI”,“ESRI.ArcGIS.Utility”。單擊確定???? 注:對于ESRI .NET程序集,將通過具體實例來說明,并使用.NET框架提供的COM傳送服務從你的C#項目中調用ESRI對象庫中的實體對象。 (二)在容器中嵌入ArcGIS控件 在你能夠訪問每個控件的事件、屬性和方法之前,需要將控件嵌入到.NET容器中。一旦將控件嵌入窗體內,它們將圖形化應用程序的用戶界面。 1.在設計模式下打開.NET窗體。?????? 2.雙擊工具箱Windows標簽欄中的AxMapControl控件,將MapControl加入到窗體上。?????? 3.再將AxPageLayoutControl、AxTOCControl和AxToolbarControl如上添加到窗體中。?????? 4.重新調整窗體上各個控件的大小和位置,調整結果如下所示。?????? 5.在窗體上雙擊顯示窗體代碼窗口,在代碼窗口的頂部增加“using”命令:?????? using?System; using?System.Windows.Forms; // ArcGIS Engine引用 using?ESRI.ArcGIS.SystemUI; using?ESRI.ArcGIS.Carto; using?ESRI.ArcGIS.Display; using?ESRI.ArcGIS.Geometry; using?ESRI.ArcGIS.esriSystem; using?ESRI.ArcGIS.ToolbarControl; using?ESRI.ArcGIS.TOCControl; 注:需注意C#是區分大小寫的。當你鍵入“ESRI.”時,智能敏感的自動完成功能將允許你通過按Tab鍵完成下一節。 (三)加載Map文檔到MapControl與PageLayoutControl 單獨的數據層或者使用ArcMap、ArcGIS桌面應用程序產生的圖形文檔,能夠被加載到MapControl和PageLayoutControl中。你可以加載樣例圖形文檔,或者加載你自己的圖形文檔。后面你將增加一個瀏覽圖形文檔的對話框。 1.選擇Form_Load事件,并輸入下列代碼(如果你使用你自己的圖形文檔,要替換為正確的文件名):?????? ?????//?使用相對路徑向PageLayoutControl加載一個圖形文檔 ?????string?filename = @"../../../../../../../../Data//ArcGIS_Engine_Developer_Guide//gulf of st. lawrence.mxd"; ?????if?( axPageLayoutControl1.CheckMxFile(filename) ) ???? { ???????? axPageLayoutControl1.LoadMxFile(filename, ""); ???? } 2.在設計模式顯示窗體并從屬性窗選擇axPageLayoutControl1控件,顯示axPageLayoutControl事件。在OnPageLayoutReplaced事件上雙擊向代碼窗口添加該事件的處理函數。?????? 3.?????axPageLayoutControl1_OnPageLayoutReplaced事件中鍵入以下向MapControl加載樣例圖形文檔的代碼。當文檔被裝載入PageLayoutControl時OnPageLayoutReplaced事件將會被觸發。 ?????privatevoid?axPageLayoutControl1_OnPageLayoutReplaced(object?sender, ESRI.ArcGIS.PageLayoutControl.IPageLayoutControlEvents_OnPageLayoutReplacedEvent e) ???? { ?????????//?加載同樣的文檔到MapControl ???????? axMapControl1.LoadMxFile(axPageLayoutControl1.DocumentFilename,?null,?null); ?????????//?設置MapControl顯示范圍至數據的全局范圍 ???????? axMapControl1.Extent = axMapControl1.FullExtent; } (四)設置ToolbarControl與TOCControl控件的綁定控件 對于此應用程序,TOCControl和ToolbarControl控件將與PageLayoutControl相互協作,而不是MapControl。為此PageLayoutControl必須設置為綁定控件。TOCControl使用綁定的ActiveView顯示圖形、圖層和符號。而位于ToolbarControl上的任何命令、工具或菜單項會受綁定控件的顯示影響。 1.在Form_Load事件中的加載文檔代碼的后面鍵入以下紅色部分內容:?????? ?????privatevoid?Form1_Load(object?sender, System.EventArgs e) ???? { ?????????//?使用相對路徑向PageLayoutControl加載一個圖形文檔 ?????????string?filename = @"../../../../../../../../Data//ArcGIS_Engine_Developer_Guide//gulf of st. lawrence.mxd"; ?????????if?( axPageLayoutControl1.CheckMxFile(filename) ) ???????? { ???????????? axPageLayoutControl1.LoadMxFile(filename, ""); ???????? } ? ???????? //?設置綁定控件 ???????? axTOCControl1.SetBuddyControl(axPageLayoutControl1); ???????? axToolbarControl1.SetBuddyControl(axPageLayoutControl1); } 2.生成并運行應用程序。圖形文檔被加載到PageLayoutControl,并且TOCControl列出了圖形文檔中的數據圖層。使用TOCControl通過復選和取消復選框控制圖層的可見性。默認地,圖形文檔的焦點圖(focus map)被裝入MapControl控件。在這種當前情況下,ToolbarControl控件顯示是空的,因為沒有為它添加任何命令。試著縮放窗體,你會注意到控件不會改變尺寸。?????? (五)處理窗口縮放 當窗口在運行時進行縮放時,PageLayoutControl和MapControl不會自動改變自身的尺寸。要改變控件的尺寸以便它們總是與匹配窗口的范圍,你必須將控件錨定在窗口上。如果PageLayoutControl或MapControl包含大量的數據,在窗口縮放期間重繪這些數據顯得相當重要。為了提高執行效率,你可以禁止數據重繪直到縮放操作完成后再重繪之。在縮放時,可以用一個可伸縮的位圖來替代重繪數據。 1.在設計模式顯示窗體并從屬性窗口中選擇axPageLayoutControl1。單擊Anchor屬性,將axPageLayoutControl1錨定在窗體的頂、左、底和右部。?????? 2.錨定axMapControl控件到窗體的頂、左和底部。?????? 3.在Form_Load事件的開頭增加以下代碼:?????? //?當縮放時禁止重繪 this.SetStyle(ControlStyles.EnableNotifyMessage,?true); 4.向類增加以下常量:?????? ????????publicclass?Form1 : System.Windows.Forms.Form ???? { ???????? //?…… ?????????privateconstint?WM_ENTERSIZEMOVE = 0x231; privateconstint?WM_EXITSIZEMOVE = 0x232; ?//?…… } 5.向重載的OnNotifyMessage方法中增加下列代碼:?????? ?????protectedoverridevoid?OnNotifyMessage(Message m) ???? { ?????????base.OnNotifyMessage (m); ???????? ???????? //?以下為手工添加的代碼 ?????????if?( m.Msg == WM_ENTERSIZEMOVE) ???????? { ???????????? axMapControl1.SuppressResizeDrawing(true, 0); ???????????? axPageLayoutControl1.SuppressResizeDrawing(true, 0); ???????? } ?????????elseif?( m.Msg == WM_EXITSIZEMOVE) ???????? { ???????????? axMapControl1.SuppressResizeDrawing(false, 0); ???????????? axPageLayoutControl1.SuppressResizeDrawing(false, 0); ???????? } } 6.生成并運行應用程序,試著縮放窗口。?????? 注:禁止縮放時重畫方法是通過檢查發送到窗體的Windows消息工作的。當窗口開發縮放時,Windows發送WM_ENTERSIZEMOVE窗口消息。此時,我們禁止在MapControl和PageLayoutControl上繪制圖形,而是使用“stretchy bitmap”繪制。當Windows發送WM_EXITSIZEMOVE消息時,窗體結束縮放,這時我們全部重繪新的范圍。 (六)向ToolbarControl增加命令 ArcGIS Engine提供了120多個命令和工具,它們與MapControl、PageLayoutControl和ToolbarControl直接相互協作。這些命令和工具為你提供了大量的經常使用的地圖導航、圖形管理、地物選擇等方面的GIS功能。現在將在你的應用程序中增加這些命令和工具的一部分。 1.在Form_Load事件中的加載文檔代碼之前添加如下代碼。?????? ?????????//?增加打開檔命令 ?????????string?progID; ???????? progID = "esriControlToolsGeneric.ControlsOpenDocCommand"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?false, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ?????????//?增加PageLayout導航命令 ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomInTool"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomOutTool"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsPageLayout.ControlsPagePanTool"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomWholePageCommand"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomPageToLastExtentBackCommand"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomPageToLastExtentForwardCommand"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ??????????? ?????????//?增加地圖導航命令 ???????? progID = "esriControlToolsMapNavigation.ControlsMapZoomInTool"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsMapNavigation.ControlsMapZoomOutTool"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsMapNavigation.ControlsMapPanTool"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); ? ???????? progID = "esriControlToolsMapNavigation.ControlsMapFullExtentCommand"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconOnly); //?使用相對路徑向PageLayoutControl加載一個圖形文檔 //?…… 2.生成并運行應用程序。現在ToolbarControl包含了ArcGIS Engine命令和工具,你可以使用它們導航加載到PageLayoutControl中的圖形文檔。使用頁面布局命令對當前的頁面布局進行導航控制,要對存在于數據框架中的數據進行導航則使用地圖命令。利用找開文檔命令可以瀏覽并加載其他的圖形文檔。?????? (七)給PageLayoutControl添加彈出式菜單 與給跟綁定控件協作的ToolbarControl增加ArcGIS Engine命令一樣,按照前面的步驟,你也可以從ArcGIS Engine命令創建彈出式菜單。下面將向你的應用程序中增加與PageLayoutControl協作的彈出式菜單。當在PageLayoutControl可視區域點擊鼠標右鍵的時候,彈出式菜單將顯示。 1.向類中添加如下的成員變量(紅色部分):?????? ?publicclass?Form1 : System.Windows.Forms.Form ?{ ??????private?ESRI.ArcGIS.MapControl.AxMapControl axMapControl1; ??????private?ESRI.ArcGIS.PageLayoutControl.AxPageLayoutControl axPageLayoutControl1; ??????private?ESRI.ArcGIS.TOCControl.AxTOCControl axTOCControl1; ??????private?ESRI.ArcGIS.ToolbarControl.AxToolbarControl axToolbarControl1; ? ?? private IToolbarMenu m_ToolbarMenu = new ToolbarMenuClass(); //?彈出式菜單 //?…… 2.在Form_Load事件中向ToolbarControl增加命令代碼的后面加載文檔代碼的前面增加如下代碼。?????? ?????privatevoid?Form1_Load(object?sender, System.EventArgs e) ???? { ???????? //?前面是增加地圖導航的代碼…… ???????? //?共享ToolbarControl的命令池 ???????? m_ToolbarMenu.CommandPool = axToolbarControl1.CommandPool; ? ?????????//?向ToolbarMenu增加命令 ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomInFixedCommand"; ???????? m_ToolbarMenu.AddItem(progID, -1, -1,?false, ???????????? esriCommandStyles.esriCommandStyleIconAndText); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomOutFixedCommand"; ???????? m_ToolbarMenu.AddItem(progID, -1, -1,?false, ???????????? esriCommandStyles.esriCommandStyleIconAndText); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomWholePageCommand"; ???????? m_ToolbarMenu.AddItem(progID, -1, -1,?false, ???????????? esriCommandStyles.esriCommandStyleIconAndText); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomPageToLastExtentBackCommand"; ???????? m_ToolbarMenu.AddItem(progID, -1, -1,?true, ???????????? esriCommandStyles.esriCommandStyleIconAndText); ? ???????? progID = "esriControlToolsPageLayout.ControlsPageZoomPageToLastExtentForwardCommand"; ???????? m_ToolbarMenu.AddItem(progID, -1, -1,?false, ???????????? esriCommandStyles.esriCommandStyleIconAndText); ? ?????????//?設置與PageLayoutControl掛接 ?????? m_ToolbarMenu.SetHook(axPageLayoutControl1); ?????? ??????????? //?后面是加載圖形文檔的代碼…… ??????????? //?…… 3.在設計模式顯示窗體并從屬性窗口中選擇axPageLayoutControl1,顯示axPageLayoutControl事件。雙擊OnMouseDown事件,向代碼窗口中增加事件處理代碼。?????? 4.axPageLayoutControl1_OnMouseDown事件中增加如下代碼:?????? ?????privatevoid?axPageLayoutControl1_OnMouseDown(object?sender, ESRI.ArcGIS.PageLayoutControl.IPageLayoutControlEvents_OnMouseDownEvent e) ???? { ?????????//?彈出ToolbarMenu ?????????if?( e.button == 2) ???????? { ???????????? m_ToolbarMenu.PopupMenu(e.x, e.y, axPageLayoutControl1.hWnd); ???????? } } 5.?????生成并運行應用程序。在PageLayoutControl的顯示區域單擊右鍵以顯示彈出菜單,并為頁面布局導航。 ? (八)在TOCControl中控制標簽編輯 TOCControl默認允許用戶自動地切換圖層的可見性并改變顯示在目錄表中的名稱。你可以增加代碼防止用戶在編輯名稱時輸入空的字符串。 1.在Form_Load事件的開始增加下列代碼。?????? ?????privatevoid?Form1_Load(object?sender, System.EventArgs e) ???? { ?????????//?當縮放時禁止重繪 ?????????this.SetStyle(ControlStyles.EnableNotifyMessage,?true); ? ?????????//?設置標簽編輯為手動方式 ???????? axTOCControl1.LabelEdit = esriTOCControlEdit.esriTOCControlManual; ? ??????????? //?后面是加載文檔代碼 ??????????? //?…… 2.在設計模式顯示窗體并從屬性窗口選擇AxTOCControl1控件,顯示AxTOCControl事件。雙擊OnEndLabelEdit向代碼窗口添加事件處理函數。?????? 3.?????axTOCControl1_OnEndLabelEdit事件中添加以下代碼: ?????privatevoid?axTOCControl1_OnEndLabelEdit(object?sender, ESRI.ArcGIS.TOCControl.ITOCControlEvents_OnEndLabelEditEvent e) ???? { ?????????//?禁止在編輯標簽時鍵入空字串 ?????????string?newLabel = e.newLabel; ?????????if?( newLabel.Trim() == "" ) ???????? { ???????????? e.canEdit =?false; ???????? } ???? } 4.生成并生成應用程序。編輯TOCControl控件的地圖、圖層、標題或圖例類的標簽,在其上點擊一次,然后再點一次調用標簽編輯。試著用空字串替代標簽。在編輯期間,你可以隨時使用鍵盤上的ESC鍵取消編輯。?????? (九)在MapControl上繪制圖形 你可以將MapControl作為縮略圖窗體使用,并在其上繪制顯示PageLayoutControl內的焦點地圖的當前范圍。當你瀏覽PageLayoutControl數據框架內的數據時,你將看到縮略圖窗口也進行了更新。 注:使用地圖導航工具導航焦點圖(活動圖)將改變PageLayoutControl中焦點地圖的范圍并引起MapControl更新。使用頁面布局工具導航頁面布局將改變頁面布局的范圍(不是PageLayoutControl中的焦點圖的范圍),而MapControl將不更新。 1.向類中增加下列成員變量:?????? publicclass?Form1 : System.Windows.Forms.Form { ?????private?ESRI.ArcGIS.MapControl.AxMapControl axMapControl1; ?????private?ESRI.ArcGIS.PageLayoutControl.AxPageLayoutControl axPageLayoutControl1; ?????private?ESRI.ArcGIS.TOCControl.AxTOCControl axTOCControl1; ?????private?ESRI.ArcGIS.ToolbarControl.AxToolbarControl axToolbarControl1; ? ?????private?IToolbarMenu m_ToolbarMenu =?new?ToolbarMenuClass();?//?彈出式菜單 ? ?????private?IEnvelope m_Envelope;???// MapControl繪制的范圍 ?????private?Object m_FillSymbol;????//?在MapControl上繪制范圍使用的符號 ?????private?ITransformEvents_VisibleBoundsUpdatedEventHandler ????????? visBoundsUpdatedE;??????????// PageLayoutControl的焦點圖事件 注:聲明的變量visBoundsUpdatedE是一個托管。托管是一個類,它能夠擁有對指定方法的引用,并使它鏈接到一個特定的事件。在事件和方法之間的鏈接過程有時在.NET中被稱作wiring。 2.創建一個叫CreateOverviewSymbol的新函數。這個函數是創建你將在MapControl中使用的符號的地方,此符號是用來描述PageLayoutControl焦點地圖數據范圍的。函數中增加的代碼如下:?????? privatevoid?CreateOverviewSymbol() ???? { ?????????//?獲取IRGBColor接口 ???????? IRgbColor color =?new?RgbColor(); ?????????//?設置顏色屬性 ???????? color.RGB = 255; ? ?????????//?獲取ILine符號接口 ???????? ILineSymbol outline =?new?SimpleLineSymbol(); ?????????//?設置線符號屬性 ???????? outline.Width = 1.5; ???????? outline.Color = color; ? ?????????//?獲取IFillSymbol接口 ???????? ISimpleFillSymbol simpleFillSymbol =?new?SimpleFillSymbolClass(); ?????????//?設置填充符號屬性 ???????? simpleFillSymbol.Outline = outline; ???????? simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSHollow; ???????? m_FillSymbol = simpleFillSymbol;??????????? } 3.從Form_Load事件在TOCControl標簽編輯代碼之前調用CreateOverviewSymbol函數。?????? ?????privatevoid?Form1_Load(object?sender, System.EventArgs e) ???? { ?????????//?當縮放時禁止重繪 ?????????this.SetStyle(ControlStyles.EnableNotifyMessage,?true); ? ?????????//?創建MapControl使用的符號 CreateOverviewSymbol(); ? //?下面是標簽編輯處理代碼 //?…… } 4.增加下列OnVisibleBoundsUpdated函數。此函數將與地圖范圍改變時觸發的事件相連接,并用來設置新的地圖可見邊界范圍框。通過刷新MapControl,你強制它重繪其上顯示的圖形。?????? ?????privatevoid?OnVisibleBoundsUpdated(IDisplayTransformation sender,?bool?sizeChanged) ???? { ?????????//?設置新的可見范圍 ???????? m_Envelope = sender.VisibleBounds; ? ?????????//?改變MapControl的前景狀態 axMapControl1.ActiveView.PartialRefresh( esriViewDrawPhase,esriViewForeground,?null,?null);?????? } 5.默認的事件接口是IPageLayoutControlEvents。這些事件不告訴我們數據邊框內的地圖范圍。為此你需要使用PageLayoutControl的焦點地圖的ItransformEvents接口。在PageLayoutControl_OnPageLayoutReplaced事件處理中的加載文檔代碼前面增加以下代碼。??????PageLayoutControl privatevoid?axPageLayoutControl1_OnPageLayoutReplaced(object?sender, ESRI.ArcGIS.PageLayoutControl.IPageLayoutControlEvents_OnPageLayoutReplacedEvent e) ???? { ?????????//?獲取PageLayoutControl中焦點地圖的IActiveView對象 ???????? IActiveView activeView = (IActiveView) ???????????? axPageLayoutControl1.ActiveView.FocusMap; ? ?????????//?捕捉PageLayoutControl的焦點圖的ITransformEvents事件 ???????? visBoundsUpdatedE =?new???????? ITransformEvents_VisibleBoundsUpdatedEventHandler(OnVisibleBoundsUpdated); ???????? ((ITransformEvents_Event)activeView.ScreenDisplay ???????????? .DisplayTransformation).VisibleBoundsUpdated += visBoundsUpdatedE; ???????? ?????????//?獲取焦點圖的范圍 m_Envelope = activeView.Extent; //?后面是加載地圖文檔的代碼 //?…… 6.在設計模式下顯示窗體并從屬性窗中選擇axMapControl1,顯示axMapControl事件。雙擊OnAfterDraw向代碼窗口中增加事件處理。?????? 7.向axMapControl1_OnAfterDraw事件處理中增加以下代碼,使用前面創建的符號繪制MapControl顯示邊框。?????? privatevoid?axMapControl1_OnAfterDraw(object?sender, ESRI.ArcGIS.MapControl.IMapControlEvents2_OnAfterDrawEvent e) ???? { ?????????if?( m_Envelope ==?null) ???????? { ?????????????return; ???????? } ? ?????????//?如果前景狀態被重繪 ???????? esriViewDrawPhase viewDrawPhase = (esriViewDrawPhase)e.viewDrawPhase; ?????????if?( viewDrawPhase == esriViewDrawPhase.esriViewForeground ) ???????? { ???????????? IGeometry geometry = m_Envelope; ???????????? axMapControl1.DrawShape(geometry,?ref?m_FillSymbol); ???????? } } 生成并運行應用程序。使用你先前已經加好的地圖導航工具改變PageLayoutControl中焦點地圖的范圍。新的范圍被繪制在MapControl上。 (十)創建自定義工具 創建協同MapControl和PageLayoutControl一起運作的自定義命令和工具,與你或許已經做過的創建ESRI ArcMap應用程序命令非常相似。你將創建一個在PageLayoutControl鼠標點擊位置添加包含當天日期的文本元素的自定義工具。不管用何種方法,創建同MapControl和ToolbarControl協作的命令與同PageLayoutControl一樣。 這個自定義工具的相關代碼與其他本方案源代碼一樣很有用。如果你想要直接使用自定義命令,而不自己創建它,請直接到第24步。 1.新建項目對話框創建一個新的Visual C#?“類庫”項目。?????? 2.將項目命名為“Commands”,并選擇保存位置存貯之。?????? 3.單擊項目菜單并選擇“添加引用(R)…”。?????? 4.在添加引用對話框中,復選“ESRI.ArcGIS.Carto”,“ESRI.ArcGIS.Display”,“ESRI.ArcGIS.Geometry”,“ESRI.ArcGIS.System”,“ESRI.ArcGIS.SystemUI”,“ESRI.ArcGIS..Utility”和“ESRI.ArcGIS.ControlCommands”。?????? 5.在項目中增加一個類,名字叫AddDateTool。?????? 6.點擊項目菜單并選擇添加現有項,瀏覽樣例源碼目錄并找到date.bmp文件將其加入到你的項目。?????? 7.解決方案資源管理器中點擊date.bmp在屬性窗口顯示其屬性。改變生成操作屬性為嵌入的資源。這張位圖將被用來作為命令按鈕的外觀。?????? 8.改變AddDateTool的命名空間的名稱為CSharpDotNETCommands。?????? namespace?CSharpDotNETCommands { …… 注:要在Visual Basi .NET中改變命名空間的名稱,則在解決方案資源管理器的項目上點擊右鍵并選擇屬性,在項目屬性頁中選擇常規并改變根命名空間后,按確定 9.?????在AddDateTool類代碼窗口的頂部增加以下引用。 using?System; using?ESRI.ArcGIS.Carto; using?ESRI.ArcGIS.Display; using?ESRI.ArcGIS.Geometry; using?ESRI.ArcGIS.SystemUI; using?ESRI.ArcGIS.esriSystem; using?ESRI.ArcGIS.ControlCommands; using?ESRI.ArcGIS.Utility.BaseClasses; using?System.Runtime.InteropServices; 10.指定AddDateTool類繼承自ESRI BaseTool抽象類,并增加密封(sealed)類修飾。???? publicsealedclass?AddDateTool : BaseTool { …… 注:抽象類是不能被實例化的類,通常僅包含部分實現代碼,或者不包含任何實現代碼。它們與接口密切相關;但與接口有明顯的區別,也就是說,一個類可能實現任意數量的接口,但它僅能夠從一個抽象類中繼承。繼承了ESRI BaseTool抽象類,你便可以比直接實現esriSystemUI ICommand和ITool接口更快速、簡便地創建命令和工具。 密封類修飾說明一個類不能被繼承。此類的設計是為了限制其他類從該類繼承。 11.向AddDateTool類的構造函數中增加下列代碼:???? ????publicsealedclass?AddDateTool : BaseTool ??? { ????????public?AddDateTool() ??????? { ????????????//?獲取程序集中的資源數組 ????????????string[] res = GetType().Assembly.GetManifestResourceNames(); ? ??? ????????//?設置工具屬性 ????????????base.m_bitmap =?new?System.Drawing.Bitmap( ??????????????? GetType().Assembly.GetManifestResourceStream(res[0])); ????????????base.m_caption = "添加日期"; ????????????base.m_category = "CustomCommands"; ????????????base.m_message = "在頁面布局中增加一個日期元素"; ????????????base.m_name = "CustomCommands_Add Date"; ????????????base.m_toolTip = "添加日期"; ??????? } ??? } 注:類構造函數是一個當類創建時被調用的方法。它可以用來初始化類成員變量。構造函數名與類名相同;與其他方法不同的是它沒有返回類型 程序中只個別地替換實現了位圖、標題、目錄、名稱、消息和提示方法,你可以設置從這此方法返回的值,且依賴于BaseTool類為這此方法提供的實現。其它的成員保留BaseTool類返回的默認值。 12.向AddDateTool類增加下列成員變量。???? publicsealedclass?AddDateTool : BaseTool { ????// HookHelper對象處理通過OnCreate事件的回調 ????private?IHookHelper m_HookHelper =?new?HookHelperClass(); ?????????…… 13.類視圖窗口中,定位到BaseCommand類的OnCreate方法,右鍵點擊之顯示上下文菜單。選擇增加,然后重載并增加該方法至代碼窗口。???? 14.在重載的OnCreate方法中增加以下代碼。???? ?????publicoverridevoid?OnCreate(object?hook) ???? { ???????? m_HookHelper.Hook = hook; ???? } 注:要在Visual Basic .NET中重載屬性和方法,從代碼窗口頂部的“Class Name”組合框中選擇“Overrides”,從“Method Name”組合框中選擇屬性或方法。 15.在類視圖中定位到BaseCommand類的Enabled屬性并在其上點擊右鍵顯示上下文菜單。選擇添加,然后點重寫增加該屬性至代碼窗口。???? 16.增加以下代碼,重寫BaseTool類的默認Enabled值。???? ?????publicoverridebool?Enabled ???? { ?????????get ???????? { ?????????????//?設置使能屬性 ?????????????if?( m_HookHelper.ActiveView !=?null?) ???????????? { ?????????????????returntrue; ???????????? } ?????????????else ???????????? { ?????????????????returnfalse; ???????????? } ???????? } ???? } 注:ICommand_OnCreate事件向命令工作的應用程序傳送一個句柄或回調。在這種情況下,它可以是MapControl,PageLayoutControl或ToolbarControl。除向OnCreate事件增加代碼外,你可以使用HookHelper判斷傳向命令的回調類型。命令或工具需要知道如何處理傳送的回調,所以必須對ArcGIS Control傳送的類型作檢查。HookHelper用來控件回調并返回ActiveView忽略的回調類型(MapControl、PageLayoutControl和ToolbarControl都是這樣)。 17.在類視圖中定位到BaseTool基類的OnMouseDown方法,并在其上點擊右鍵顯示上下文菜單。選擇添加,然后重載并增加該屬性至代碼窗口。???? 18.增加下列代碼,重載BaseTool類實現的默認OnMouseDown函數。???? ?????publicoverridevoid?OnMouseDown(int?Button,?int?Shift,?int?X,?int?Y) ???? { ?????????// TODO:?添加 AddDateTool.OnMouseDown 實現 ?????????base.OnMouseDown (Button, Shift, X, Y); ? ?????????//?獲取活動視圖 ???????? IActiveView activeView = m_HookHelper.ActiveView; ? ?????????//?創建新的文本元素 ???????? ITextElement textElement =?new?TextElementClass(); ?????????//?創建文本符號 ???????? ITextSymbol textSymbol =?new?TextSymbolClass(); ???????? textSymbol.Size = 25; ? ?????????//?設置文本元素屬性 ???????? textElement.Symbol = textSymbol; ???????? textElement.Text = DateTime.Now.ToShortDateString(); ? ?????????//?對IElementQI ???????? IElement element = (IElement) textElement; ?????????//?創建頁點 ???????? IPoint point =?new?PointClass(); ???????? point = activeView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); ??????? ?????????//?設置元素圖形 ???????? element.Geometry = point; ? ?????????//?增加元素到圖形繪制容器 ???????? activeView.GraphicsContainer.AddElement(element, 0); ?????????//?刷新圖形 ???????? activeView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, ?????????????null,?null); ???? } 19.期望自定義命令是一個COM類;因此,你必須指定你所創建的.NET類也成為一個COM類,它是通過創建一個COM可調用包裝(callable wrapper)實現的。在解決方案資源管理器窗口中,在Commands項目上右擊鼠標鍵并從上下文菜單中選擇屬性?????ArcGIS Engine 20.在項目屬性頁對話框中選擇配置屬性;并點擊生成。在右面的面板中,改變為“為Com Interop注冊”為True,點確定???? 注:設置“為Com Interop注冊”屬性為True會調用程序集注冊工具(Regasm.exe)。這將增加客戶端期望找到的類信息。 如果“為Com Interop注冊”屬性設為False,則使項目不要是一個C#類庫類型。 21.在AddDateTool類的代碼編寫窗口的AddDateTool類聲明的開始位置增加下列代碼,指定COM需要的屬性。???? ??? [ClassInterface(ClassInterfaceType.None)] ??? [Guid("D880184E-AC81-47E5-B363-781F4DC4528F")] ????注:新的GUID可能通過Visual Studio .NET中的GuidGen.exe實用工具生成,或者從工具菜單中選擇創建GUIDGUID應該像上面的格式并不包含大括號(curly braces) 22.向AddDateTool類成員變量的后面增加下列代碼。此代碼定義了一些函數,這些函數使用目錄實用工具向ESRI控件命令(ESRI Control Commands)組件目錄注冊和取消注冊AddDateTool類。???? ?????//?在“ESRI Controls Commands”組件目錄注冊 ???? #region?Component Category Registration ???? [ComRegisterFunction()] ???? [ComVisible(false)] ?????staticvoid?RegisterFunction(String sKey) ???? { ?????????string?fullKey = sKey.Remove(0, 18) + @"/nImplemented Categories"; ???????? Microsoft.Win32.RegistryKey regKey = ???????????? Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(fullKey,?true); ?????????if?(regKey !=?null) ???????? { ???????????? regKey.CreateSubKey("{B284D891-22EE-4F12-A0A9-B1DDED9197F4}"); ???????? } ???? } ? ???? [ComUnregisterFunction()] ???? [ComVisible(false)] ?????staticvoid?UnregisterFunction(String sKey) ???? { ?????????string?fullKey = sKey.Remove(0, 18) + @"/Implemented Categories"; ???????? Microsoft.Win32.RegistryKey regKey = ???????????? Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(fullKey,?true); ?????????if?(regKey !=?null) ???????? { ???????????? regKey.DeleteSubKey("{B284D891-22EE-4F12-A0A9-B1DDED9197F4}"); ???????? } ???? } ???? #endregion 23.生成工程。???? 24.在方案開始創建的Visual Studio .NET?“Windows應用程序”項目中,增加地圖導航命令代碼的后面增加以下代碼。???? ?????privatevoid?Form1_Load(object?sender, System.EventArgs e) ???? { ???????? //?前面是命令導航代碼……?????????? ?????????//?添加自定義日期工具 ???????? progID = "CSharpDotNETCommands.AddDateTool"; ???????? axToolbarControl1.AddItem(progID, -1, -1,?true, 0, ???????????? esriCommandStyles.esriCommandStyleIconAndText); //?后面是ToolbarMenu相關代碼…… } 25.生成并運行應用程序,使用添加日期工具向PageLayoutControl上增加一個包含當天日期的文本元素。???? (十一)自定義ToolbarControl 同在Form_Load事件中向ToolbarControl控件增加ArcGIS Engine命令和工具一樣,你也可以使用定制對話框和自定義ToolbarControl的方式添加命令和工具。要實現它,就要將ToolbarControl置為定制模式并顯示定制對話框。 1.向類中增加下列成員變量:?????? …… ?????private?ITransformEvents_VisibleBoundsUpdatedEventHandler ???????? visBoundsUpdatedE;??????????// PageLayoutControl的焦點圖事件 ? ?????private?ICustomizeDialog m_CustomizeDialog =?new ???????? CustomizeDialogClass();?// CurtomizeDialog被ToolbarControl使用 ?????private?ICustomizeDialogEvents_OnStartDialogEventHandler ???????? startDialogE;?// CustomizeDialog啟動事件 ?????private?ICustomizeDialogEvents_OnCloseDialogEventHandler ???????? closeDialogE;?// CustomizeDialog關閉事件 …… 注:Visual Studio .NET提供了當程序集對COM interop開放時執行的函數在系統中被注冊和取消注冊的功能。這就允許你在定制對話框可能找到的組件目錄中注冊你自己的類。 2.創建一個叫CreateCustomizeDialog的新函數,這個函數是你通過增加如下代碼創建自定義對話框的地方。?????? ?????privatevoid?CreateCustomizeDialog() ???? { ?????????//?設置自定義對話框事件 ???????? startDialogE =?new ???????????? ICustomizeDialogEvents_OnStartDialogEventHandler(OnStartDialog); ???????? ((ICustomizeDialogEvents_Event)m_CustomizeDialog).OnStartDialog += ???????????? startDialogE; ???????? closeDialogE =?new ???????????? ICustomizeDialogEvents_OnCloseDialogEventHandler(OnCloseDialog); ???????? ((ICustomizeDialogEvents_Event)m_CustomizeDialog).OnCloseDialog += ???????????? closeDialogE; ? ?????????//?設置標題 ???????? m_CustomizeDialog.DialogTitle = "自定義ToolbarControl項目"; ?????????//?顯示“從文件添加”按鈕 ???????? m_CustomizeDialog.ShowAddFromFile =?true; ?????????//?設置將增加新項目的ToolbarControl ???????? m_CustomizeDialog.SetDoubleClickDestination(axToolbarControl1); } 注:設置ComVisible屬性為false確保此方法不能被COM客戶端直接調用。當程序集通過COM注冊時,它不影響被調用的方法。 3.在Form_Load事件中調用CreateOverviewSymbol子過程以前調用CreateCustomizeDialog函數。?????? ?????privatevoid?Form1_Load(object?sender, System.EventArgs e) ???? { ?????????//?當縮放時禁止重繪 ?????????this.SetStyle(ControlStyles.EnableNotifyMessage,?true); ? ?????????//?為ToolbarControl創建自定義對話框 CreateCustomizeDialog(); …… } 4.在窗體上增加一個名叫“chkCustomize”的復選框,并將標題命名為“定制”。?????? 5.在設計模式顯示窗體并從屬性窗口選擇chkCustomize控件,顯示chkCustomize事件。在CheckedChanged事件上雙擊向代碼窗口增加相應的事件處理。?????? 6.向chkCustomize_CheckedChanged事件中增加下列代碼。?????? ?????privatevoid?chkCustomize_CheckedChanged(object?sender, System.EventArgs e) ???? { ?????????//?顯示或隱藏自定義對話框 ?????????if?(chkCustomize.Checked ==?false?) ???????? { ???????????? m_CustomizeDialog.CloseDialog(); ???????????? axToolbarControl1.Customize =?false; ???????? } ?????????else ???????? { ???????????? m_CustomizeDialog.StartDialog(axToolbarControl1.hWnd); ???????????? axToolbarControl1.Customize =?true; ???????? } } 7.增加下以下OnStartDialog和OnCloseDialog事件處理函數。這些函數將與自定義對話框打開或關閉時觸發的事件緊密連接。?????? ?????privatevoid?OnStartDialog() ???? { ??????????? axToolbarControl1.Customize =?true;????? ???? } ? ?????privatevoid?OnCloseDialog() ???? { ???????? axToolbarControl1.Customize =?false; ???????? chkCustomize.Checked =?false; } 8.生成并運行應用程序,選擇定制復選框使ToolbarControl進入自定義模式,并打開自定義對話框。?????? 9.在自定義ToolbarControl項目對話框中的左邊目錄(Categories)列表中選擇“Graphic Element”項,然后在右邊的命令(Commands)列表中“Select Elements”項上雙擊將其加入到ToolbarControl工具欄中。右鍵點擊ToolbarControl上的任何一個項目,你可以調整它的顯示樣式和組合特性。?????? 10.結束定制應用。使用選擇工具移動包含日期的文本元素。???? 六、部署 要將應用程序成功地部署到另一臺機器上,必須為應用程序配置協議。首先,它必須檢查產品協議是否有效,其次,它必須初始化協議。如果協議配置不正確有,應用程序將不能運行。 注:當采用ESRI ArcObjects開發獨立運行的程序時,應用程序負責檢查并配置協議選項。它通過實現CoClass AoInitialize和IAoInitialize接口來支持協議配置。應用程序運行時,在任何ESRI ArcObject功能被訪問之前協議初始化必須先被執行。如果初始化失敗將導致應用程序錯誤。 1.向類中增加下列成員變量。?????? publicclass?Form1 : System.Windows.Forms.Form ??? { ????????private?ESRI.ArcGIS.MapControl.AxMapControl axMapControl1; ????????private?ESRI.ArcGIS.PageLayoutControl.AxPageLayoutControl axPageLayoutControl1; ????????private?ESRI.ArcGIS.TOCControl.AxTOCControl axTOCControl1; ????????private?ESRI.ArcGIS.ToolbarControl.AxToolbarControl axToolbarControl1; ? ????????//?應用初始化對象 ????????private?IAoInitialize m_AoInitialize =?new?AoInitializeClass(); ? //?后面是彈出菜單變量聲明代碼 …… 2.在Form_Load事件的最開始位置增加下列代碼。?????? ?????privatevoid?Form1_Load(object?sender, System.EventArgs e) ???? { ?????????//?創建新的AoInitialize對象 ?????????if?( m_AoInitialize ==?null) ???????? { ???????????? System.Windows.Forms.MessageBox.Show( ???????????????? "初始化失敗,程序不能運行!"); ?????????????this.Close(); ???????? } ? ?????????//?判斷產品是否有效 ???????? esriLicenseStatus licenseStatus = (esriLicenseStatus) ???????????? m_AoInitialize.IsProductCodeAvailable( ???????????? esriLicenseProductCode.esriLicenseProductCodeEngine); ?????????if?(licenseStatus == esriLicenseStatus.esriLicenseAvailable ) ???????? { ???????????? licenseStatus = (esriLicenseStatus) ???????????????? m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine); ?????????????if?(licenseStatus != esriLicenseStatus.esriLicenseCheckedOut ) ???????????? { ???????????????? System.Windows.Forms.MessageBox.Show( ???????????????????? "初始化失敗,應用程序不能運行!"); ?????????????????this.Close(); ???????????? } ???????? } ?????????else ???????? { ???????????? System.Windows.Forms.MessageBox.Show( ???????????????? "ArcGIS Engine產品無效,此程序不能運行!"); ?????????????this.Close(); ???????? } ? ?????????//?當縮放時禁止重繪 this.SetStyle(ControlStyles.EnableNotifyMessage,?true); //?后面是創建自定義對話框的代碼…… …… } 3.在設計模式顯示窗體并在屬性窗口選擇Form1,顯示窗體事件。在Closing事件上雙擊向代碼窗口增加事件處理代碼。?????? 4.在Form_Closing事件中增加以下代碼:?????? ?????privatevoid?Form1_Closing(object?sender, System.ComponentModel.CancelEventArgs e) ???? { ?????????//?釋放COM對象并關閉AoInitialize對象 ???????? ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown(); ???????? m_AoInitialize.Shutdown(); } 5.在Release模式下生成項目和解決方案。?????? 要將應用程序成功地部署到用戶機器上: l???要將應用程序的可執行文件和包含自定義命令的動態鏈接庫DLL發布到用戶機器上。程序集注冊工具(RegAsm.exe)必須被用來向注冊表增加關于自定義類的信息。 l???用戶機器上需要安裝有ArcGIS Engine運行時庫和標準ArcGIS Engine協議。 l???客戶機上需要安裝Microsoft .NET Framework 1.1。 七、附加資源 下列資源可以幫助你理解和應用在本方案中在在的概念和技術。 l???在ArcGIS Engine開發工具包中包含了其他可用的文檔:ArcGIS開發幫助,組件幫助,對象模型圖表和適合于初學者的樣例程序。 l???ArcGIS開發在線——一個Web站點,提供了最新的ArcGIS開發信息,包括程序樣例和技術文檔。請訪問http://arcgisdeveloperonline.esri.com/ l???ESRI在線討論組——Web站點,從其他ArcGIS開發者提供無償援助。請訪問http://support.esri.com/并點擊用戶論壇頁簽。 l???微軟Visual Studio .NET開發環境中的文檔。

轉載于:https://www.cnblogs.com/arxive/p/6017418.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久人人爽爽人人爽人人片av | 国产一区二区三区四区大秀 | 欧美精品一区二区免费 | 99久久99热这里只有精品 | 久久老司机精品视频 | 永久免费的啪啪网站免费观看浪潮 | 一区二区电影在线观看 | 久久久噜噜噜久久久 | 人人涩| a色网站 | 91资源在线 | 这里有精品在线视频 | 久久久国产一区二区三区 | 精品一区二区视频 | 亚洲国产视频a | 日韩精品亚洲专区在线观看 | 亚洲天天摸日日摸天天欢 | 亚洲专区在线 | 97超碰人人| 亚洲电影影音先锋 | 精品免费视频123区 午夜久久成人 | 亚洲丝袜一区二区 | 开心婷婷色 | 日韩一三区 | 久久免费视频5 | 午夜一级免费电影 | 九九九九热精品免费视频点播观看 | 欧美成年人在线观看 | 国产精品免费久久久久影院仙踪林 | 正在播放一区二区 | av黄网站| 欧美激情综合五月色丁香小说 | 国产在线a视频 | 人人爱人人射 | av解说在线| 国产98色在线 | 日韩 | 久久一区二区免费视频 | 在线影院中文字幕 | 欧美一二三视频 | 麻豆传媒视频在线播放 | 国产精品美女视频网站 | 去干成人网 | 欧美一区二区在线看 | 99热在线国产 | 欧美精品国产综合久久 | 久久久久视 | 久久精品一区二区 | 亚洲va欧洲va国产va不卡 | 九九激情视频 | 国产在线播放一区二区三区 | 精品一区二区视频 | 成人在线免费小视频 | 444av| 精品国产诱惑 | 午夜精品一区二区三区在线播放 | 精品一区久久 | 亚洲综合在线视频 | 精品国产视频在线 | 国产区免费 | 中文字幕永久 | 婷婷国产视频 | 日日射av | 中文字幕乱码电影 | 99久久国产免费免费 | www.久久婷婷 | 亚洲成人黄色在线 | 亚洲一区二区视频在线播放 | 欧美日韩一区久久 | 波多野结衣在线播放视频 | 91亚色视频在线观看 | 国产少妇在线观看 | 国语黄色片 | 国际精品久久 | 人人插人人艹 | 91av大全| 在线成人看片 | 91桃色免费视频 | 天堂av网在线 | 久久久av电影 | 久久久久久久电影 | 日韩高清在线不卡 | av免费在线观看网站 | 综合网中文字幕 | 国产精品夜夜夜一区二区三区尤 | 91福利社在线观看 | 久草在线看片 | 国产视 | 久久久久久久国产精品 | 欧美亚洲免费在线一区 | 日韩午夜三级 | 91视频在线 | 夜夜躁日日躁狠狠久久88av | av看片网| 国产无套精品久久久久久 | 久久久久久久久久久综合 | 国产综合在线观看视频 | 国产精品尤物视频 | 日韩毛片在线免费观看 | 国产美女精品久久久 | 免费日韩在线 | www国产在线 | adc在线观看 | 国产精品永久在线 | 最新国产在线视频 | 久久精品91视频 | av在线短片 | 久久艹艹 | 九九一级片| 中文字幕av最新更新 | 国产精品21区 | 人人爽人人爽人人爽学生一级 | 国产精品剧情 | 美女黄频在线观看 | 日韩中文免费视频 | а中文在线天堂 | 涩涩网站在线看 | 99视频免费在线观看 | 国产亚洲精品久久久久久网站 | 久久婷婷国产色一区二区三区 | 亚洲精品视频中文字幕 | 天天干天天天 | 免费国产亚洲视频 | 亚洲一区二区三区在线看 | 亚洲一区 影院 | 人人dvd| 色黄久久久久久 | 黄色三级免费网址 | 亚洲日本韩国一区二区 | 色婷婷综合久色 | 久久99久久99精品免观看粉嫩 | 伊人丁香 | 色综合狠狠干 | 毛片网站免费 | 久久久久国产精品午夜一区 | 亚洲精品午夜久久久 | 在线成人中文字幕 | 亚洲涩涩网站 | 欧美亚洲国产精品久久高清浪潮 | 成全在线视频免费观看 | 美女精品 | 婷婷综合五月天 | 天天伊人网| 国产成人三级一区二区在线观看一 | 精品av在线播放 | 欧美黑人性爽 | 草久在线播放 | 精品久久久久久国产偷窥 | 91福利视频久久久久 | 天天色天天射天天操 | 一区二区三区精品久久久 | aaa日本高清在线播放免费观看 | 不卡的av电影在线观看 | 欧美日韩亚洲一 | 久久久久久久综合色一本 | 国产美女视频免费 | 亚洲国产视频直播 | 久久a v电影 | 日韩中字在线观看 | 欧美日韩一区二区三区视频 | 黄色在线观看网站 | 国语对白少妇爽91 | 最新中文字幕视频 | 国产精品va在线播放 | 亚洲综合导航 | 亚洲成a人片在线观看网站口工 | 亚洲视频免费视频 | 成人网看片| 十八岁以下禁止观看的1000个网站 | 2021国产精品 | 久久歪歪 | 国产99久久久精品 | 狠狠干狠狠操 | 免费看一级黄色大全 | 丁香免费视频 | 伊人色综合网 | 亚洲国产经典视频 | 国产免费又爽又刺激在线观看 | 色九九在线 | 九九久久成人 | 波多野结衣在线观看一区二区三区 | 99国产精品久久久久久久久久 | 国产成人黄色网址 | 一本之道乱码区 | 视频成人永久免费视频 | 丁香激情综合久久伊人久久 | 欧美日韩中文在线观看 | 国产免费一区二区三区最新 | 婷婷福利影院 | 中文字幕在线一区二区三区 | 91视频在线看 | 麻豆94tv免费版 | 天天综合狠狠精品 | 九九久久久久久久久激情 | 亚洲精品黄色 | 久久免费播放视频 | 日韩一区二区三区在线看 | 日韩精品久久久久久久电影99爱 | 久久国产手机看片 | 手机在线看a | 成人国产精品久久久 | 97天天综合网 | 欧美韩国在线 | 国产欧美日韩精品一区二区免费 | 日韩一区二区三区视频在线 | 黄色av高清| 国产精品免费看 | 国产在线精品视频 | 黄色一及电影 | 国产伦理一区 | 中文字幕在线观看一区二区 | 亚洲免费在线视频 | 五月综合色婷婷 | 成人试看120秒 | 天天操天天色天天射 | 激情综合六月 | 成人黄大片视频在线观看 | 波多野结衣电影一区二区 | 婷婷丁香花 | 免费a v在线| 91在线最新 | 午夜精品久久久久久99热明星 | 国产精品第十页 | 在线 国产一区 | 丁香六月激情婷婷 | 最近日本中文字幕a | 精品电影一区二区 | 国产精品国产三级国产aⅴ无密码 | 久久国产精品免费一区二区三区 | 亚洲欧美视频在线播放 | 97超碰人人澡人人爱学生 | 九九久久精品视频 | 毛片网在线播放 | 97超碰免费在线观看 | 一区二区三区在线电影 | 免费在线观看91 | 热久久精品在线 | 丁香综合激情 | 久久久.com | 亚洲国产中文在线 | 黄色的片子 | 成x99人av在线www| 国产裸体视频bbbbb | bbw av| 国产精品国产三级国产 | 91c网站色版视频 | 免费看黄电影 | 亚洲爱爱视频 | 国产999在线| 国产成人不卡 | 久久精品99北条麻妃 | 天天射天天舔天天干 | 国产精品18久久久久久不卡孕妇 | 久草视频在线新免费 | 国产精品va | 91av在| 日日碰夜夜爽 | 免费在线观看国产黄 | 免费h在线观看 | 国产精品久久久久永久免费看 | 国产在线观看午夜 | 波多野结衣亚洲一区二区 | 久久精品久久精品久久 | 国产中文字幕免费 | 成人影音在线 | 激情五月激情综合网 | 美州a亚洲一视本频v色道 | 欧美一级电影在线观看 | 国产精品扒开做爽爽的视频 | 国产精品永久免费在线 | 一区二区激情视频 | 欧美色伊人 | 91色一区二区三区 | 国产精品久久久久久久午夜片 | 成人网在线免费视频 | 国产成人精品一区在线 | 国产精品一区免费看8c0m | 亚洲欧美日韩精品久久奇米一区 | 成人观看视频 | 国产精品麻豆91 | 免费在线国产视频 | www视频在线播放 | 高清av在线| 欧美成人aa| 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 在线视频手机国产 | 国产视频在线观看免费 | 日韩高清免费观看 | 国产一区成人在线 | 免费看黄色小说的网站 | 成人理论在线观看 | 天天插日日操 | 欧美一区二区日韩一区二区 | 午夜精品久久久久久久久久久 | 日韩av网页 | 色在线网| 久久免费中文视频 | 色www精品视频在线观看 | 97视频免费在线观看 | 国产在线999 | 天天综合中文 | 久久综合免费视频影院 | 综合色爱| 国产在线更新 | 福利视频| 粉嫩aⅴ一区二区三区 | 色综合久久88色综合天天人守婷 | 视频精品一区二区三区 | 在线看不卡av | 粉嫩av一区二区三区四区五区 | 国产精品一区二区免费 | 日韩国产精品久久久久久亚洲 | 国产一线在线 | 黄色一级免费 | 99综合久久 | 黄色一级动作片 | 婷婷丁香狠狠爱 | 亚洲精品日韩av | 国产精品激情在线观看 | 日日夜夜天天久久 | 成人av网站在线播放 | av在线收看 | 亚洲最新av | 亚洲精品tv久久久久久久久久 | 特级西西444www大胆高清无视频 | 九色免费视频 | 18女毛片 | 亚洲资源片 | 国内精品在线观看视频 | 91网免费看 | 91麻豆精品国产91久久久更新时间 | 国产伦精品一区二区三区在线 | 日韩av一区二区在线影视 | 中文字幕黄网 | 久久精品视频网 | 91视频 - 88av | 国产精品第| 六月激情网 | 成年人视频免费在线播放 | 免费日韩 精品中文字幕视频在线 | 国产精品一区二区免费视频 | 91超在线| 国产精品精 | 精品国产乱码一区二区三区在线 | 欧美一区中文字幕 | 成年人黄色免费网站 | 亚洲精品免费在线播放 | 久久久久久免费网 | 日本少妇久久久 | 草 免费视频| а天堂中文最新一区二区三区 | 国产日产精品一区二区三区四区的观看方式 | 国产精品久久久久久吹潮天美传媒 | 精品久久一区二区 | 高清av在线 | 久久老司机精品视频 | 成人小视频在线 | 日日干夜夜草 | 在线a亚洲视频播放在线观看 | 日韩v在线91成人自拍 | 欧美在线视频日韩 | 91九色免费视频 | 日韩精品欧美专区 | 国内精品小视频 | 色网址99 | 美女黄频视频大全 | 亚洲黄污| 国产在线观看xxx | 日韩精品一区二区三区中文字幕 | 中文字幕中文字幕在线中文字幕三区 | 色综合五月天 | 久久99在线视频 | 欧美少妇18p | 欧美日韩在线观看不卡 | 欧美另类亚洲 | 亚洲黄色免费在线看 | 久久综合精品国产一区二区三区 | 一区二区三区动漫 | 日韩高清在线一区二区 | 亚洲国产免费看 | 国产高清久久久 | 日日摸日日爽 | 日本资源中文字幕在线 | 91粉色视频| 国产经典三级 | 久久毛片高清国产 | 国产精品精品国产色婷婷 | 国产精品久久久久久久久久ktv | 久久九九久久精品 | 精品免费一区二区三区 | 午夜精品一区二区三区四区 | 日韩激情视频在线观看 | www.超碰97.com | 亚洲精品免费在线观看视频 | av不卡免费在线观看 | 久草在线免费电影 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产精品美女久久久网av | 久久99国产精品视频 | 精品久久视频 | 国产视频在线免费 | 欧美老人xxxx18 | 久久久免费电影 | 国产午夜精品免费一区二区三区视频 | 99视频精品视频高清免费 | 国产成人精品福利 | 九九热免费视频在线观看 | 国产艹b视频 | 久久伊人国产精品 | 天天操操操操操操 | 久久毛片高清国产 | www.av中文字幕.com| av成人资源| 波多野结衣视频一区 | 亚洲精品视频在线看 | 亚洲欧洲精品久久 | 久福利 | 99久久久久久久久 | 亚洲精品视频偷拍 | 国产精品一区二区三区免费看 | 日韩天天操 | 97人人艹| 久久艹欧美 | 欧美一区二区精美视频 | 国产精品久久久久一区二区国产 | 国产精品久久久久久a | 91亚洲精品久久久中文字幕 | 欧美日韩裸体免费视频 | 九色91福利 | 日韩高清免费电影 | 五月婷综合 | 麻花豆传媒mv在线观看网站 | 午夜视频在线观看一区二区三区 | 欧美日韩精品在线免费观看 | av成人免费 | 国产手机av | 欧美激情精品久久 | 久草a视频 | 成人午夜影院 | 偷拍精偷拍精品欧洲亚洲网站 | 免费一级特黄录像 | 成人 亚洲 欧美 | 国产精品亚洲成人 | 色婷婷在线播放 | 国产精品成久久久久 | 中文字幕av免费 | 夜色.com| 在线观看911视频 | 人人舔人人干 | 91黄色小网站 | 精选久久 | 亚洲一级二级 | 日韩精品视频免费 | 亚洲视频免费 | 亚洲精品综合在线观看 | 天天操,夜夜操 | 狠狠狠狠狠狠干 | 久久色在线播放 | 久久精品国产精品亚洲精品 | 91精品国产91久久久久 | 天天插天天干 | 国产精品久久久久久久久久免费看 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产精品久久久久久久久婷婷 | 天堂av中文字幕 | 又黄又爽又无遮挡免费的网站 | 国产69精品久久久久久 | 天天色天天干天天 | 一区二区视频在线免费观看 | 国产成人精品福利 | 一区二区三区电影大全 | 久久久久久久久国产 | 911国产在线观看 | 五月综合激情网 | 久久99精品国产 | 久久99精品国产99久久 | 九九久久久久99精品 | 成年人app网址 | 久久与婷婷 | 色久综合| 九九免费视频 | 人成在线免费视频 | 久久精品成人热国产成 | 亚洲最新视频在线 | 91高清完整版在线观看 | 精品91在线 | 成人性生交大片免费看中文网站 | 婷婷精品在线视频 | 国产麻豆精品免费视频 | 在线观看视频你懂 | 欧美日韩不卡一区二区三区 | 日韩av片无码一区二区不卡电影 | 久草热视频 | 中文字幕第一页在线视频 | 少妇bbbb揉bbbb日本 | 午夜精品久久久久久久99 | 免费看日韩片 | 婷婷资源站 | 欧美日韩精品在线免费观看 | 91在线播放综合 | 四虎在线免费观看 | 在线电影日韩 | 国产视频一区在线播放 | 天天躁天天躁天天躁婷 | 91视频91蝌蚪 | 国产精品九九九 | 久久久人 | 久久成人免费电影 | 91看片淫黄大片一级在线观看 | 99精品国产在热久久下载 | 97国产电影| 欧美日韩免费一区二区 | 在线视频 你懂得 | 精品你懂的 | 在线观看黄av | 日韩视频一区二区三区在线播放免费观看 | 精品一区二区在线免费观看 | 亚洲成av人片在线观看www | 亚洲第一久久久 | 黄色毛片视频免费观看中文 | 在线视频一区二区 | 极品久久久久久久 | 在线观看免费av网 | 欧美日韩国产一区二区三区在线观看 | 91亚色免费视频 | 香蕉视频一级 | 日韩精品极品视频 | 精品理论片| 亚州精品视频 | 天天色宗合 | 久久久久久久99精品免费观看 | 成人av电影免费在线观看 | 国产亚洲精品久久久久久久久久 | 久久99精品久久久久久清纯直播 | 欧美一级看片 | 高清av免费一区中文字幕 | 欧美国产日韩激情 | 亚洲一区在线看 | 欧美一级日韩免费不卡 | 国产91免费在线 | 成人va视频 | 国产 日韩 在线 亚洲 字幕 中文 | 六月丁香婷婷网 | 综合伊人久久 | 2017狠狠干 | 亚洲少妇激情 | 国产精品久久电影观看 | 免费三级黄 | 国产视频精品久久 | 91成品视频| 亚洲最新av在线网址 | 特级黄录像视频 | 天天干,天天射,天天操,天天摸 | 久久国产精品99久久人人澡 | 免费 在线 中文 日本 | 久久综合色天天久久综合图片 | 色婷婷啪啪免费在线电影观看 | 午夜精品视频一区 | 日日爽天天操 | 天天操夜夜爱 | 91大神精品视频在线观看 | 欧美国产一区在线 | 国产毛片久久 | 99精品在线视频观看 | 色丁香婷婷 | 麻豆视频91 | 国产一区私人高清影院 | 中文字幕亚洲精品在线观看 | 国产午夜精品av一区二区 | 999久久久 | 亚洲精品国精品久久99热 | 国内精品久久天天躁人人爽 | 2023av在线 | 亚洲天堂网在线观看视频 | 午夜视频久久久 | 日韩视频免费播放 | 私人av| 亚洲一二三久久 | 97超碰人人澡人人爱学生 | 91久久精品一区 | 亚洲va欧美va人人爽春色影视 | 成人免费看片网址 | 亚洲高清国产视频 | 国产视频欧美视频 | 色在线网站 | 久久这里只有精品视频99 | 日韩专区一区二区 | 欧美一区二区三区在线 | 国产精品女同一区二区三区久久夜 | av在线免费观看不卡 | 免费婷婷| 国产精品一区在线 | 久色小说 | 久久久久成人精品免费播放动漫 | 久久人人爽爽人人爽人人片av | 正在播放久久 | 欧美aaa视频| 美女免费视频网站 | 欧美日韩精品久久久 | 黄色在线观看网站 | 黄色片免费在线 | 亚洲天堂va | 91av中文| 欧美色图另类 | 色综合久久88色综合天天免费 | 日韩黄色一级电影 | 91日韩精品一区 | 国产精品女人久久久 | 欧美一区二区精品在线 | 欧美一级特黄aaaaaa大片在线观看 | 国产成人久久精品一区二区三区 | 亚洲最大av在线播放 | 国产91精品一区二区麻豆网站 | 在线视频婷婷 | 久久99精品久久久久婷婷 | 综合色婷婷| 丁香视频在线观看 | 久久久久免费电影 | 久久久久区 | 久久久久亚洲最大xxxx | 色在线免费 | 亚洲视频 在线观看 | 丁香婷婷色综合亚洲电影 | 97超碰人人澡人人爱 | 国产香蕉av| 久久视频在线观看免费 | 国产不卡高清 | 免费看的黄色片 | 久久手机在线视频 | 91天堂素人约啪 | 精品在线观看免费 | 欧美永久视频 | 激情开心站 | 成人在线观看免费 | 久久不见久久见免费影院 | 久久免费黄色大片 | 青草视频网 | 黄色av一区二区三区 | 狠狠干狠狠操 | 日韩免费不卡视频 | 国产精品久久99精品毛片三a | 在线播放精品一区二区三区 | 天天天天天天天天操 | 国产一区二区在线免费观看 | 丁香久久 | 久久国产精品一区二区 | 日日夜夜草 | 四虎影视4hu4虎成人 | www.狠狠插.com | 欧美日韩69| 国产专区第一页 | 天天综合导航 | 中文视频在线播放 | 黄网站色欧美视频 | 人人澡人人爽欧一区 | 在线日韩视频 | 久久综合九色综合欧美就去吻 | 色婷五月 | 亚洲视频 中文字幕 | 亚洲精品一区二区三区新线路 | 91人人人 | 九九综合九九综合 | 一区二区三区精品在线 | 国产亚州av| 成人资源在线 | 四虎国产精品免费观看视频优播 | www日韩视频| 免费毛片一区二区三区久久久 | 日产乱码一二三区别免费 | 亚洲 欧洲av | 精品视频免费播放 | 亚洲最大的av网站 | 日本不卡一区二区三区在线观看 | 免费观看成人网 | 国产精品一区二区久久精品爱涩 | 日韩精品免费在线观看视频 | 日韩欧美国产精品 | 九九涩涩av台湾日本热热 | 国产精品美乳一区二区免费 | 91.麻豆视频 | 91丨九色丨蝌蚪丨老版 | 激情欧美在线观看 | 日韩高清激情 | 九九视频这里只有精品 | 久久丁香网 | 日韩在线播放欧美字幕 | 亚洲成年人av | 91麻豆精品国产91久久久久久久久 | 99在线看| 免费在线观看a v | 在线免费观看视频你懂的 | 午夜av剧场 | 四虎国产永久在线精品 | 亚洲成人免费观看 | 九九视频精品免费 | 免费在线观看成人 | 亚洲精品视频久久 | 人人网人人爽 | 免费av一级电影 | 四虎永久免费网站 | 亚洲欧美久久 | 日韩av一区二区在线播放 | 成人网在线免费视频 | av免费网站 | 国产99久久久精品 | 久久久三级视频 | 免费一级片久久 | 久久综合加勒比 | 日韩视频1 | 天天操夜夜曰 | 亚洲黄在线观看 | 天天夜夜操 | 久久成人午夜 | 日韩中文字幕免费看 | 在线小视频 | 免费进去里的视频 | 亚洲一片黄| 国产在线探花 | 国产精品18久久久久久首页狼 | 天天干天天色2020 | 国产精品久久久电影 | 国产999免费视频 | 九热精品| 免费日韩 精品中文字幕视频在线 | 国产成人99av超碰超爽 | 激情网第四色 | 亚洲成人黄色在线观看 | 干天天 | 亚洲免费在线看 | 色999在线 | 中文字幕 国产视频 | 国产99久久99热这里精品5 | 99久久激情视频 | 91精品免费看 | 欧美三级高清 | 日韩电影一区二区在线观看 | 欧美日韩中文在线观看 | 999成人免费视频 | 国产99色| 国产日产高清dvd碟片 | 免费在线观看av片 | 日韩精品一区二区免费 | 亚洲人在线7777777精品 | 中文字幕av最新更新 | 黄色小视频在线观看免费 | 二区三区在线视频 | 国产精品久久久久久久久免费看 | 国产一级二级av | 中文字幕在线视频一区 | 久草在线99 | 国内成人av| 免费av在 | 亚洲国产日韩一区 | 亚洲电影一区二区 | 五月天电影免费在线观看一区 | 色噜噜日韩精品欧美一区二区 | 亚洲人成人在线 | 免费网址你懂的 | 久久永久免费视频 | 国产午夜麻豆影院在线观看 | 日本中文乱码卡一卡二新区 | 91黄色免费网站 | 久久久久亚洲天堂 | 国产免费久久久久 | 特黄特色特刺激视频免费播放 | 超碰在线亚洲 | 黄色的片子| 久草视频观看 | 深爱激情五月网 | 国产成人久久久77777 | 欧美成人猛片 | 日韩视频在线观看视频 | 日韩中文字幕一区 | 色视频成人在线观看免 | 国产第一页福利影院 | 激情自拍av | 国产日产精品久久久久快鸭 | 欧洲在线免费视频 | 国产美女精品在线 | 手机色在线 | 韩国精品视频在线观看 | 久久不卡国产精品一区二区 | 国产精品一区二区久久国产 | 成人av电影免费观看 | 涩涩在线| 亚洲国产中文字幕在线 | 日本aaa在线观看 | 午夜成人免费电影 | 91在线蜜桃臀 | 97视频免费在线观看 | 一区二区三区在线免费观看视频 | 在线观看完整版免费 | 综合伊人av | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精区二区三区四区麻豆 | 精品福利视频在线 | 国产精品女人久久久 | 精品999| 国产精品婷婷午夜在线观看 | 国产精品亚洲精品 | 天天射天天操天天色 | 婷婷网站天天婷婷网站 | 午夜精品久久久久久久99无限制 | 国产无套精品久久久久久 | 国产欧美在线一区二区三区 | 欧美中文字幕久久 | 日韩欧美在线影院 | 日韩精品免费在线播放 | 天堂网av 在线 | 激情综合色图 | 色停停五月天 | 日韩免费在线一区 | 国产成人一级 | 亚洲情感电影大片 | 欧美精品久久久久久久久久久 | 日本高清中文字幕有码在线 | 91精品久久久久久久久久入口 | 97精品国产97久久久久久免费 | 欧美色操 | 日日干网 | 四虎影视av | 日韩美女免费线视频 | 国产特级毛片aaaaaaa高清 | 免费精品人在线二线三线 | 国产精品专区一 | 日日夜夜天天 | 免费在线观看av | 免费看成人av | 一区二区精品在线观看 | 国内久久精品视频 | 最新一区二区三区 | 成年人免费电影 | 久色婷婷| 九九国产精品视频 | 国产亚洲婷婷免费 | 亚州av成人 | 午夜久久久久久久 | 99精品国产高清在线观看 | 久久成人一区二区 | 中国一级片在线观看 | 激情一区二区三区欧美 | 中文字幕在线观看你懂的 | 色婷婷亚洲 | 国产在线一线 | 国产精品久久嫩一区二区免费 | 曰韩在线 | 91黄色视屏| 成人精品国产 | a在线观看免费视频 | 久草在线手机观看 | 亚洲精品久久久久中文字幕二区 | 欧美性一级观看 | 99久久精品国产免费看不卡 | 天天综合网 天天综合色 | 色播五月激情五月 | 干亚洲少妇 | 日韩免费一区二区 | 国产精品欧美一区二区三区不卡 | 中文字幕一区二区三区乱码不卡 | 日韩久久午夜一级啪啪 | 国产生活一级片 | 麻豆视频在线免费观看 | 国产香蕉97碰碰碰视频在线观看 | 久久久精品久久日韩一区综合 | 欧美精品少妇xxxxx喷水 | 成人久久久久 | 久草影视在线观看 | 久久久免费观看视频 | 色婷婷狠狠五月综合天色拍 | 欧美性护士 | 玖草在线观看 | 中文字幕精品一区二区三区电影 | 日韩免费网址 | 亚洲人成影院在线 | 久草精品电影 | 在线观看免费视频你懂的 | 香蕉视频在线免费看 | 日韩精品一区二区久久 | 精品国产视频一区 | 99亚洲精品在线 | 黄色资源在线观看 | 91片网 | 高清免费在线视频 | 91精品久久久久久久久久入口 | 欧美日韩免费在线观看视频 | 99视频导航 | 国产精品久久久久久久久久了 | 欧美 激情 国产 91 在线 | 亚洲精品中文字幕视频 | 日韩久久精品一区二区 | 在线视频你懂 | 国产精品免费观看国产网曝瓜 | 狠狠色丁香婷婷综合橹88 | 亚洲区二区 | a天堂免费 | 999精品| 日韩欧美精品一区 | 亚洲精品综合久久 | 国产精品女人网站 | 精品久久久久久久久久 | 91香蕉久久 | 欧美视频日韩 | 日本三级人妇 | 丁香五香天综合情 | av福利超碰网站 | 粉嫩一二三区 | 在线免费观看黄色 | 在线成人小视频 | 欧美日韩视频免费看 | 中文字幕美女免费在线 | 91精品久久久久久久久 | 精品久久久久久国产偷窥 | 国产精品18久久久久vr手机版特色 | 国产精品va最新国产精品视频 | 欧美日韩免费看 | 国色天香永久免费 | 国产精品视频99 | 国产精品久久久久久久妇 | 久久超级碰| 特及黄色片 | 成人久久久久久久久久 | 国产综合福利在线 | 日韩视频在线观看免费 | av电影在线播放 | www.eeuss影院av撸 | 手机色在线 | 久久人人爽人人爽人人片av软件 | 日韩欧美在线综合网 | 日日碰狠狠躁久久躁综合网 | 久久国产视频网站 | 亚洲国产资源 | 韩日色视频 | 日本精品久久久久中文字幕5 | 精品毛片久久久久久 | 久久电影网站中文字幕 | 亚洲国产视频网站 | 黄色片网站免费 | 国产高清在线永久 | 久久亚洲成人网 | 久久1电影院 | 992tv成人免费看片 | 日韩在线网址 | 91色综合 | 久久精品看 | 成人黄色电影免费观看 | 手机av观看| 激情五月婷婷激情 | 精品视频999 | www国产亚洲精品 | 色五月激情五月 | 欧美成人一二区 | 日韩在线观看免费 | 992tv又爽又黄的免费视频 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 日本三级不卡 | 精品久久久久久久久久 | 天天撸夜夜操 | 日日天天狠狠 | 久草爱视频 | 人成在线免费视频 | 麻豆影视网 | av三级av | 不卡在线一区 | 男女啪啪免费网站 | 亚洲五月六月 | 免费裸体视频网 | 国产美女网站视频 | 日韩理论电影在线 | 久久久久久久综合色一本 | 亚洲一本视频 | 中文字幕a在线 | 欧美精品国产综合久久 | 国产成人av电影 | 中文字幕在线免费观看视频 | 亚洲六月丁香色婷婷综合久久 | 久草视频在线观 | 激情小说久久 | 欧美aa一级 | av片在线看 | 亚洲精品动漫在线 | 美女国产 | 精品久久久久久国产 | 国产精品一区二区精品视频免费看 | 日本黄色大片免费 | 国产精品99久久99久久久二8 | 天天色官网 | 成人动漫一区二区 | 亚洲精品国产精品国 | 亚洲一级电影在线观看 | 午夜av网站 | 国产黄色资源 | 欧美在线观看视频一区二区三区 | 亚洲精品美女久久久 | 少妇bbw搡bbbb搡bbb | 黄色免费在线看 | 日韩色视频在线观看 | 亚洲精品五月 | 日韩欧美精品在线视频 | 美女视频又黄又免费 |