当前位置:首页 > ArcEngine主要功能源码
pMapDocument.Close();
MessageBox.Show(\保存地图文档成功!\); }
catch (Exception ex) {
MessageBox.Show(ex.Message); }
//ICommand command = new ControlsSaveAsDocCommandClass(); //command.OnCreate(mainMapControl.Object); //command.OnClick(); }
//地图另存为
private void btnSaveAsMap_Click(object sender, EventArgs e) {
try {
SaveFileDialog pSaveFileDialog = new SaveFileDialog(); pSaveFileDialog.Title = \另存为\;
pSaveFileDialog.OverwritePrompt = true;
pSaveFileDialog.Filter = \文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|*.mxt\;
pSaveFileDialog.RestoreDirectory = true;
if (pSaveFileDialog.ShowDialog() == DialogResult.OK) {
string sFilePath = pSaveFileDialog.FileName;
IMapDocument pMapDocument = new MapDocumentClass(); pMapDocument.New(sFilePath);
pMapDocument.ReplaceContents(mainMapControl.Map as IMxdContents);
pMapDocument.Save(true, true); pMapDocument.Close(); } }
catch (Exception ex) {
MessageBox.Show(ex.Message);
} }
#endregion
#region 地图浏览 //拉框放大
string pMouseOperate = null;
private void btnZoomIn_Click(object sender, EventArgs e) {
mainMapControl.CurrentTool = null; pMouseOperate = \; mainMapControl.MousePointer = esriControlsMousePointer.esriPointerZoomIn; }
//拉框缩小
private void btnZoomOut_Click(object sender, EventArgs e) {
mainMapControl.CurrentTool = null; pMouseOperate = \; mainMapControl.MousePointer = esriControlsMousePointer.esriPointerZoomOut;
#region 自定义拉框缩小
//IEnvelope trackExtent, currentExtent, NewIEN = null; //currentExtent = mainMapControl.Extent;
//trackExtent = mainMapControl.TrackRectangle();
//double dXmin = 0, dYmin = 0, dXmax = 0, dYmax = 0, dHeight = 0, dWidth = 0;
//dWidth = currentExtent.Width * (currentExtent.Width / trackExtent.Width);
//dHeight = currentExtent.Height * (currentExtent.Height / trackExtent.Height);
//dXmin = currentExtent.XMin - ((trackExtent.XMin - currentExtent.XMin) * (currentExtent.Width / trackExtent.Width)); //dYmin = currentExtent.YMin - ((trackExtent.YMin -
currentExtent.YMin) * (currentExtent.Height / trackExtent.Height)); //dXmax = dXmin + dWidth; //dYmax = dYmin + dHeight;
//NewIEN = new EnvelopeClass();
//NewIEN.PutCoords(dXmin, dYmin, dXmax, dYmax); //mainMapControl.Extent = NewIEN; #endregion }
//逐级放大
private void btnZoomInStep_Click(object sender, EventArgs e) {
IEnvelope pEnvelope;
pEnvelope = mainMapControl.Extent; pEnvelope.Expand(0.5, 0.5, true); //这里设置放大为2倍,可以根据需要具体设置
mainMapControl.Extent = pEnvelope; mainMapControl.ActiveView.Refresh(); }
//逐级缩小
private void btnZoomOutStep_Click(object sender, EventArgs e) {
//IEnvelope pEnvelope;
//pEnvelope = mainMapControl.Extent; //pEnvelope.Expand(1.5, 1.5, true); //mainMapControl.Extent = pEnvelope; //mainMapControl.ActiveView.Refresh();
IActiveView pActiveView = mainMapControl.ActiveView; IPoint centerPoint = new PointClass();
centerPoint.PutCoords((pActiveView.Extent.XMin + pActiveView.Extent.XMax) / 2, (pActiveView.Extent.YMax + pActiveView.Extent.YMin) / 2);
IEnvelope envlope = pActiveView.Extent;
envlope.Expand(1.5, 1.5, true); //和放大的区别在于Expand函数的参数不同
pActiveView.Extent.CenterAt(centerPoint); pActiveView.Extent = envlope; pActiveView.Refresh(); }
//漫游
private void btnPan_Click(object sender, EventArgs e) {
mainMapControl.CurrentTool = null; pMouseOperate = \;
mainMapControl.MousePointer = esriControlsMousePointer.esriPointerPan; }
IExtentStack pExtentStack; //前一视图
private void btnFrontView_Click(object sender, EventArgs e) {
pExtentStack = mainMapControl.ActiveView.ExtentStack; //判断是否可以回到前一视图,第一个视图没有前一视图 if (pExtentStack.CanUndo()) {
pExtentStack.Undo();
btnForWardView.Enabled = true; if (!pExtentStack.CanUndo()) {
btnFrontView.Enabled = false; } }
mainMapControl.ActiveView.Refresh(); }
//后一视图
private void btnForWardView_Click(object sender, EventArgs e) {
pExtentStack = mainMapControl.ActiveView.ExtentStack; //判断是否可以回到后一视图,最后一个视图没有后一视图 if (pExtentStack.CanRedo()) {
pExtentStack.Redo();
btnFrontView.Enabled = true; if (!pExtentStack.CanRedo()) {
共分享92篇相关文档