天天看點

ArcGIS Engine 開發(二)線、圓、矩形、面、文本編輯功能

ArcGIS Engine 開發(二)線、圓、矩形、面、文本編輯功能,這些都是實作課上的源代碼,自己調試好了,直接可以放到vs2010下跑,希望能對大家有所幫助

好了,先來看效果

ArcGIS Engine 開發(二)線、圓、矩形、面、文本編輯功能

二.下面是調試好的代碼

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);
        }
       

       
    }
}
           

繼續閱讀