MXD文档保存和地图浏览
生活随笔
收集整理的這篇文章主要介紹了
MXD文档保存和地图浏览
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MXD保存
1 private void btnSaveMap_Click(object sender, EventArgs e) 2 { 3 try 4 { 5 string sMxdFileName = mainMapControl.DocumentFilename;//獲取文件名 6 IMapDocument pMapDocument = new MapDocument(); 7 if(sMxdFileName!=null&&mainMapControl.CheckMxFile(sMxdFileName)) 8 { 9 if(pMapDocument.get_IsReadOnly(sMxdFileName)) 10 { 11 MessageBox.Show("該文檔制度","Warning"); 12 pMapDocument.Close(); 13 return; 14 } 15 else 16 { 17 SaveFileDialog pSaveFileDialog=new SaveFileDialog(); 18 pSaveFileDialog.Title="請(qǐng)選擇保存路徑"; 19 pSaveFileDialog.OverwritePrompt=true;//獲取一個(gè)布爾類型值,用來提示當(dāng)存在文件名時(shí),SaveAs對(duì)話框是否顯示警告 20 pSaveFileDialog.Filter="Mxd文檔(*.mxd)|*.mxd|ArcMap模板(*.mxt)|.mxt"; 21 pSaveFileDialog.RestoreDirectory=true;//獲取一個(gè)布爾類型值,用來指示對(duì)話框再關(guān)閉前是否還原當(dāng)前目錄 22 if(pSaveFileDialog.ShowDialog()==DialogResult.OK) 23 { 24 sMxdFileName =pSaveFileDialog.FileName;//將文件名賦值給sMxdfileName; 25 } 26 else 27 { 28 return; 29 } 30 } 31 pMapDocument.New(sMxdFileName);//創(chuàng)建并打開一個(gè)以sMxdFileName為文件名的mxd文檔 32 pMapDocument.ReplaceContents(mainMapControl.Map as IMxdContents);//利用IMxdContents讀取地圖文檔內(nèi)容,并使之替換IMapDocment借口的實(shí)例對(duì)象 33 pMapDocument.Save(true,true); 34 pMapDocument.Close(); 35 MessageBox.Show("地圖文檔保存成功","提示"); 36 } 37 } 38 catch (Exception ex) 39 { 40 MessageBox.Show(ex.Message); 41 } 42 }MXD另存
1 private void btnSaveAsMap_Click(object sender, EventArgs e) 2 { 3 try 4 { 5 SaveFileDialog pSfd = new SaveFileDialog(); 6 pSfd.Title = "另存為"; 7 pSfd.OverwritePrompt = true; 8 pSfd.Filter = "Mxd文檔(*.mxd)|*.mxd|ArcMap模板(*.mxt)|.mxt"; 9 pSfd.RestoreDirectory = true; 10 if (pSfd.ShowDialog() == DialogResult.OK) 11 { 12 string sFilePath = pSfd.FileName; 13 IMapDocument pMapDoc = new MapDocumentClass(); 14 pMapDoc.New(sFilePath);////創(chuàng)建并打開一個(gè)以sFilePath為文件名的mxd文檔 15 pMapDoc.ReplaceContents(mainMapControl.Map as IMxdContents);//利用IMxdContents讀取地圖文檔內(nèi)容,并使之替換IMapDocment借口的實(shí)例對(duì)象 16 pMapDoc.Save(true, true); ; 17 pMapDoc.Close(); 18 } 19 } 20 catch (Exception ex) 21 { 22 MessageBox.Show(ex.Message); 23 } 24 }?總結(jié):
文檔的保存和另存用到的接口是ImapDocument,二者本質(zhì)上沒有區(qū)別,都需要在保存前判斷文件是否存在即可。
?
放大和縮小固定尺寸
ps:利用包絡(luò)線類(Envelope)和MapControl當(dāng)前視圖的Extent屬性實(shí)現(xiàn)
Envelope對(duì)象的Expand方法中:為false時(shí),變化以加法的形式進(jìn)行,為true時(shí),變化以乘法的形式進(jìn)行。但中心不變。
?
1 private void btnZoomInStep_Click(object sender, EventArgs e) 2 { 3 IEnvelope pEnvelope; 4 pEnvelope = mainMapControl.Extent;//以當(dāng)前視圖大小為顯示框 5 pEnvelope.Expand(0.5, 0.5, true);//這里設(shè)置放大為2倍,可以根據(jù)需要進(jìn)行設(shè)置 6 mainMapControl.Extent = pEnvelope; 7 mainMapControl.ActiveView.Refresh(); 8 } 1 private void btnZoomOutStep_Click(object sender, EventArgs e) 2 { 3 IActiveView pActiveView=mainMapControl.ActiveView; 4 IPoint centerPoint=new PointClass(); 5 centerPoint.PutCoords((pActiveView.Extent.XMin+pActiveView.Extent.XMax)/2,(pActiveView.Extent.YMin+pActiveView.Extent.YMax)/2);//獲取當(dāng)前視圖的中心點(diǎn) 6 IEnvelope pEvenlope=pActiveView.Extent; 7 pEvenlope.CenterAt(centerPoint); 8 ////expand()方法第三個(gè)參數(shù):為false時(shí),變化以加法的形式進(jìn)行,為true時(shí),變化以乘法的形式進(jìn)行。但中心不變。//// 9 pEvenlope.Expand(1.5, 1.5, false);//與放大的區(qū)別在在于參數(shù)不同 10 pActiveView.Extent = pEvenlope; 11 mainMapControl.ActiveView.Refresh(); 12 }?
轉(zhuǎn)載于:https://www.cnblogs.com/Ronaldo2011/p/7113255.html
總結(jié)
以上是生活随笔為你收集整理的MXD文档保存和地图浏览的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑客攻击发现:多个银行类APP存漏洞
- 下一篇: 超级Wi-Fi未来潜力不容小觑 有望带动