AE绘制图形

  • 格式:docx
  • 大小:16.48 KB
  • 文档页数:3

MapControl控件提供了直接在控件上绘制图形和文字的方法,如DrawShape、DrawText。

这两个方法绘制的图形都是缓存(cache),而不是真正的保存,一旦出现窗口重绘,如地图刷新等,这些图形都将消失。

代码:
int flag = 0;
private void button1_Click(object sender, EventArgs e) {flag = 1;//划线 }
private void axMapControl1_OnMouseDown(object sender,
ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
{
axMapControl1.MousePointer =
ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerCrosshair;
ESRI.ArcGIS.Geometry.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) {
ESRI.ArcGIS.Geometry.IPoint point = new
ESRI.ArcGIS.Geometry.PointClass();
point.X = e.x;
point.Y = e.y;
geometry = point as ESRI.ArcGIS.Geometry.IGeometry;
}
if (flag >= 1 && flag <= 4) {
drwaMapShape(geometry);
} else if (flag == 5) {
drawMapText(geometry);
}
axMapControl1.Refresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeogr aphy, null, null);
}
private void drawMapText(ESRI.ArcGIS.Geometry.IGeometry geometry)
{
ESRI.ArcGIS.Display.IRgbColorpColor;
pColor = new ESRI.ArcGIS.Display.RgbColorClass();
pColor.Red = 255;
pColor.Green = 0;
pColor.Blue = 0;
ESRI.ArcGIS.Display.ITextSymboltextSystem = new
ESRI.ArcGIS.Display.TextSymbol();
textSystem.Color = pColor;
object symbol = textSystem;
axMapControl1.DrawText(geometry, "测试DrawText", ref symbol);
}
private void drwaMapShape(ESRI.ArcGIS.Geometry.IGeometry geometry)
{
ESRI.ArcGIS.Display.IRgbColorpColor;
pColor = new ESRI.ArcGIS.Display.RgbColorClass();
pColor.Red = 255; pColor.Green =255;
pColor.Blue = 0; object symbol = null;
if (geometry.GeometryType ==
ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
ESRI.ArcGIS.Display.ISimpleLineSymbolsimpleLineSymbol;
simpleLineSymbol = new ESRI.ArcGIS.Display.SimpleLineSymbolClass();
simpleLineSymbol.Color = pColor;
simpleLineSymbol.Width = 5;
symbol = simpleLineSymbol;
}else {
ESRI.ArcGIS.Display.ISimpleFillSymbolsimpleLineSymbol;
simpleLineSymbol = new ESRI.ArcGIS.Display.SimpleFillSymbolClass();
simpleLineSymbol.Color = pColor;
// simpleLineSymbol.Width = 5;
symbol = simpleLineSymbol;
}
axMapControl1.DrawShape(geometry,ref symbol);
}
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;//花纹对象}。