ArcGIS Engine 开发(二)线、圆、矩形、面、文本编辑功能,这些都是实现课上的源代码,自己调试好了,直接可以放到vs2010下跑,希望能对大家有所帮助
好了,先来看效果

二.下面是调试好的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Carto;
namespace lesson5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
int flag = 0;
private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
{
axMapControl1.MousePointer =esriControlsMousePointer.esriPointerCrosshair;
IGeometry geometry =null ;
//
if (flag ==1)
{
geometry =axMapControl1.TrackLine() ;
}
else if (flag==2)
{
geometry =axMapControl1.TrackCircle ();
}
else if (flag==3)
{
geometry=axMapControl1.TrackRectangle ();
}
else if (flag==4)
{
geometry=axMapControl1.TrackPolygon ();
}
else if (flag==5)
{
IPoint point =new PointClass ();
point.X =e.x ;
point.Y =e.y ;
geometry =point as IGeometry ;
}
if (flag >= 1 && flag <= 4)
{
drawMapShape(geometry);
}
else if (flag == 5)
{
drawMapText(geometry);
}
//axMapControl1.Refresh (esriViewDrawPhase.esriViewGeography, null, null);
}
//画线对象
private void button1_Click(object sender, EventArgs e)
{
flag = 1;
}
//画圆对象
private void button2_Click(object sender, EventArgs e)
{
flag = 2;
}
//画矩形对象
private void button3_Click(object sender, EventArgs e)
{
flag = 3;
}
//画面对象
private void button4_Click(object sender, EventArgs e)
{
flag = 4;
}
//画文本对象
private void button5_Click(object sender, EventArgs e)
{
flag = 5;
}
private void drawMapText(IGeometry geometry)
{
IRgbColor color = new RgbColorClass();
color.Red = 255;
color.Blue = 0;
color.Green = 0;
ITextSymbol txtSystem = new TextSymbolClass();
txtSystem.Color = color;
//txtSystem.Text = "测试DrawText";
object symbol = txtSystem;
axMapControl1.DrawText(geometry, "测试DrawText", ref symbol);
}
private void drawMapShape(IGeometry pGeom)
{
IRgbColor pColor;
pColor = new RgbColorClass();
pColor.Red = 255;
pColor.Green =255;
pColor.Blue =0;
object symbol=null;
if (pGeom.GeometryType == esriGeometryType.esriGeometryPolyline)
{
ISimpleLineSymbol simpleLineSymbol;
simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Color = pColor;
simpleLineSymbol.Width = 5;
symbol = simpleLineSymbol;
}
else
{
ISimpleFillSymbol simpleFillSymbol;
simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Color = pColor;
symbol = simpleFillSymbol;
}
axMapControl1.DrawShape(pGeom, ref symbol);
}
}
}