www.pudn.com > map1.rar > map1.cs


using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Data; 
 
namespace Artemis.IVS.Test 
 
{ 
 
///  
 
/// 处理实例 
 
///  
 
public class FrmMain : System.Windows.Forms.Form 
 
{ 
 
private AxMapObjects2.AxMap mapMain; 
private System.Windows.Forms.MainMenu mainMenu1; 
private System.Windows.Forms.MenuItem miZoomIn; 
private System.Windows.Forms.MenuItem miZoomOut; 
private System.Windows.Forms.MenuItem miPan; 
private System.Windows.Forms.MenuItem miFullView; 
private int CurOperate = 0; 
private System.Windows.Forms.MenuItem miSelectByPoint; 
private System.Windows.Forms.MenuItem miDistance; 
private System.Windows.Forms.MenuItem miArea; 
///  
/// 必需的设计器变量。 
///  
private System.ComponentModel.Container components = null; 
 
public FrmMain() 
{ 
 
// 
 
// Windows 窗体设计器支持所必需的 
 
// 
 
InitializeComponent(); 
 
} 
 
///  
 
/// 清理所有正在使用的资源。 
 
///  
 
protected override void Dispose( bool disposing ) 
 
{ 
 
if( disposing ) 
 
{ 
 
if (components != null)  
 
{ 
 
components.Dispose(); 
 
} 
 
} 
 
base.Dispose( disposing ); 
 
} 
 
 
 
#region Windows 窗体设计器生成的代码 
 
///  
 
/// 设计器支持所需的方法 - 不要使用代码编辑器修改 
 
/// 此方法的内容。 
 
///  
 
private void InitializeComponent() 
 
{ 
 
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FrmMain)); 
 
this.mapMain = new AxMapObjects2.AxMap(); 
 
this.mainMenu1 = new System.Windows.Forms.MainMenu(); 
 
this.miZoomIn = new System.Windows.Forms.MenuItem(); 
 
this.miZoomOut = new System.Windows.Forms.MenuItem(); 
 
this.miPan = new System.Windows.Forms.MenuItem(); 
 
this.miFullView = new System.Windows.Forms.MenuItem(); 
 
this.miSelectByPoint = new System.Windows.Forms.MenuItem(); 
 
this.miDistance = new System.Windows.Forms.MenuItem(); 
 
this.miArea = new System.Windows.Forms.MenuItem(); 
 
((System.ComponentModel.ISupportInitialize)(this.mapMain)).BeginInit(); 
 
this.SuspendLayout(); 
 
//  
 
// mapMain 
 
//  
 
this.mapMain.Dock = System.Windows.Forms.DockStyle.Fill; 
 
this.mapMain.Location = new System.Drawing.Point(0, 0); 
 
this.mapMain.Name = "mapMain"; 
 
this.mapMain.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("mapMain.OcxState"))); 
 
this.mapMain.Size = new System.Drawing.Size(592, 401); 
 
this.mapMain.TabIndex = 0; 
 
this.mapMain.MouseDownEvent += new AxMapObjects2._DMapEvents_MouseDownEventHandler(this.mapMain_MouseDownEvent); 
 
//  
 
// mainMenu1 
 
//  
 
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
 
this.miZoomIn, 
 
this.miZoomOut, 
 
this.miPan, 
 
this.miFullView, 
 
this.miSelectByPoint, 
 
this.miDistance, 
 
this.miArea}); 
 
//  
 
// miZoomIn 
 
//  
 
this.miZoomIn.Index = 0; 
 
this.miZoomIn.Text = "放大"; 
 
this.miZoomIn.Click += new System.EventHandler(this.miZoomIn_Click); 
 
//  
 
// miZoomOut 
 
//  
 
this.miZoomOut.Index = 1; 
 
this.miZoomOut.Text = "缩小"; 
 
this.miZoomOut.Click += new System.EventHandler(this.miZoomOut_Click); 
 
//  
 
// miPan 
 
//  
 
this.miPan.Index = 2; 
 
this.miPan.Text = "漫游"; 
 
this.miPan.Click += new System.EventHandler(this.miPan_Click); 
    //  
 
// miFullView 
 
//  
 
this.miFullView.Index = 3; 
 
this.miFullView.Text = "全图"; 
 
this.miFullView.Click += new System.EventHandler(this.miFullView_Click); 
 
//  
 
// miSelectByPoint 
 
//  
 
this.miSelectByPoint.Index = 4; 
 
this.miSelectByPoint.Text = "点选"; 
 
this.miSelectByPoint.Click += new System.EventHandler(this.miSelectByPoint_Click); 
 
//  
 
// miDistance 
 
//  
 
this.miDistance.Index = 5; 
 
this.miDistance.Text = "距离"; 
 
this.miDistance.Click += new System.EventHandler(this.miDistance_Click); 
 
//  
 
// miArea 
 
//  
 
this.miArea.Index = 6; 
 
this.miArea.Text = "面积"; 
 
this.miArea.Click += new System.EventHandler(this.miArea_Click); 
 
//  
 
// FrmMain 
 
//  
 
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
 
this.ClientSize = new System.Drawing.Size(592, 401); 
 
this.Controls.Add(this.mapMain); 
 
this.Menu = this.mainMenu1; 
 
this.Name = "FrmMain"; 
 
this.Text = "Artemis.IVS.Test"; 
 
this.Load += new System.EventHandler(this.FrmMain_Load); 
 
((System.ComponentModel.ISupportInitialize)(this.mapMain)).EndInit(); 
 
this.ResumeLayout(false); 
 
 
 
} 
 
#endregion 
 
 
 
///  
 
/// 应用程序的主入口点。 
 
///  
 
[STAThread] 
 
static void Main()  
 
{ 
 
Application.Run(new FrmMain()); 
 
} 
 
 
 
///  
 
/// 全图 
 
///  
 
private void miFullView_Click(object sender, System.EventArgs e) 
 
{ 
 
this.CurOperate = 4; 
 
mapMain.Extent = mapMain.FullExtent; 
 
mapMain.MousePointer = MapObjects2.MousePointerConstants.moDefault; 
 
} 
 
 
 
///  
 
/// 漫游 
 
///  
 
private void miPan_Click(object sender, System.EventArgs e) 
 
{ 
 
this.CurOperate = 3;  
 
mapMain.MousePointer = MapObjects2.MousePointerConstants.moPan; 
 
} 
 
 
 
///  
 
/// 缩小 
 
///  
 
private void miZoomOut_Click(object sender, System.EventArgs e) 
 
{ 
 
this.CurOperate = 2; 
 
mapMain.MousePointer = MapObjects2.MousePointerConstants.moZoomOut; 
 
} 
 
 
 
///  
 
/// 放大 
 
///  
 
private void miZoomIn_Click(object sender, System.EventArgs e) 
 
{ 
 
this.CurOperate = 1; 
 
mapMain.MousePointer = MapObjects2.MousePointerConstants.moZoomIn; 
 
} 
 
 
 
///  
 
/// 放大缩小等的处理过程 
 
///  
 
private void mapMain_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e) 
 
{ 
 
MapObjects2.Rectangle rect; 
 
MapObjects2.Point pt = mapMain.ToMapPoint(e.x,e.y); 
 
 
 
if(e.button == 2) this.CurOperate = 0;//右键点击取消 
 
 
 
switch(this.CurOperate) 
 
{ 
 
case 1://放大 
 
{ 
 
rect = mapMain.TrackRectangle(); 
 
 
 
if(rect == null|| (rect.Width < 0.00005) || (rect.Height < 0.00005)) 
 
{  
 
rect = mapMain.Extent; 
 
rect.ScaleRectangle(0.6667); 
 
rect.Offset(-(rect.Center.X - pt.X),-(rect.Center.Y - pt.Y)); 
 
} 
 
mapMain.Extent = rect; 
 
break; 
 
} 
 
case 2://缩小 
 
{ 
 
rect = mapMain.TrackRectangle(); 
 
 
 
if ((null == rect) || (rect.Width < 0.00005) || (rect.Height < 0.00005)) 
 
{ 
 
rect = mapMain.Extent; 
 
rect.ScaleRectangle(1.5); 
 
rect.Offset(-(rect.Center.X - pt.X),-(rect.Center.Y - pt.Y)); 
 
} 
 
else 
 
{  
 
double dRate = mapMain.Extent.Width / rect.Width * 10;  
 
rect.ScaleRectangle(dRate); 
 
} 
 
 
 
mapMain.Extent = rect; 
 
break; 
 
} 
 
case 3://漫游 
 
{ 
 
mapMain.Pan(); 
 
break; 
 
} 
 
case 5://点选 
 
{ 
break; 
} 
    case 6://距离 
        { 
 
            MapObjects2.Points pts; 
 
            pts = (MapObjects2.Points)mapMain.TrackLine().Parts.Item(0); 
 
            double dDistance = 0; 
 
            for (int i = 0; i < pts.Count - 1; i++) 
            { 
 
                dDistance += Math.Sqrt(pts.Item(i).X * pts.Item(i).X + pts.Item(i).Y * pts.Item(i).Y); 
 
            } 
 
            this.Text = mapMain.ToMapDistance((float)dDistance).ToString(); 
 
            break; 
 
        } 
 
    case 7://面积 
        { 
 
            MapObjects2.Polygon ply = mapMain.TrackPolygon(); 
 
            double dArea = ply.Area; 
 
            this.Text = mapMain.ToMapDistance((float)dArea).ToString(); 
 
            break; 
 
        } 
 
    default://箭头 
        { 
 
            mapMain.MousePointer = MapObjects2.MousePointerConstants.moDefault; 
 
            break; 
 
        } 
 
} 
 
} 
 
 
 
///  
 
/// 点选 
 
///  
 
private void miSelectByPoint_Click(object sender, System.EventArgs e) 
{ 
 
    this.CurOperate = 5; 
 
    mapMain.MousePointer = MapObjects2.MousePointerConstants.moArrowQuestion; 
 
} 
 
 
 
///  
 
/// 距离 
 
///  
 
private void miDistance_Click(object sender, System.EventArgs e) 
{ 
 
    this.CurOperate = 6; 
 
    mapMain.MousePointer = MapObjects2.MousePointerConstants.moCross; 
 
} 
 
 
 
///  
 
/// 面积 
 
///  
 
private void miArea_Click(object sender, System.EventArgs e) 
{ 
 
    this.CurOperate = 7; 
 
    mapMain.MousePointer = MapObjects2.MousePointerConstants.moCross; 
 
} 
 
} 
 
}