如何在Windows窗体中添加arcgis按钮

时间:2016-09-27 09:45:38

标签: arcgis

我是ArcGis的新手。我遇到了一个要求我需要在ArcGis工具栏上执行命令的要求。单击该命令,将打开Windows窗体,并且有一个区域选择器按钮。单击该按钮后,必须最小化当前的表单UI,并允许用户绘制多边形。你能帮忙解决一下如何做到这一点。这是代码。我拿了普通的Windows按钮,在点击事件中写下了下面的代码。

        _application = ((IApplication)_hookHelper.Hook);
        IMxDocument pMxDoc = (IMxDocument)_application.Document;
        IMap pMap = (IMap)pMxDoc.FocusMap;

        IActiveView pActiveView = (IActiveView)pMap;

        if (pActiveView == null)
        {
            return;
        }

        //// Changing the state of the Window.
        if (this.WindowState == FormWindowState.Normal || this.WindowState == FormWindowState.Maximized)
        {
            this.WindowState = FormWindowState.Minimized;
            // this.Hide();
        }

        ESRI.ArcGIS.Display.IScreenDisplay screenDisplay = pActiveView.ScreenDisplay;
        // Constant
        screenDisplay.StartDrawing(screenDisplay.hDC, (System.Int16)ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache); // Explicit Cast

        ESRI.ArcGIS.Display.IRgbColor rgbColor = new ESRI.ArcGIS.Display.RgbColorClass();
        rgbColor.Blue = 111;

        ESRI.ArcGIS.Display.IColor color = rgbColor; // Implicit Cast
        ESRI.ArcGIS.Display.ISimpleFillSymbol simpleFillSymbol = new ESRI.ArcGIS.Display.SimpleFillSymbolClass();
        simpleFillSymbol.Color = color;

        ESRI.ArcGIS.Display.ISymbol symbol = simpleFillSymbol as ESRI.ArcGIS.Display.ISymbol; // Dynamic Cast
        ESRI.ArcGIS.Display.IRubberBand rubberBand = new ESRI.ArcGIS.Display.RubberRectangularPolygonClass();
        // ESRI.ArcGIS.Display.IRubberBand rubberBand = new ESRI.ArcGIS.Display.RubberPolygonClass();
        ESRI.ArcGIS.Geometry.IGeometry geometry = rubberBand.TrackNew(screenDisplay, symbol);
        screenDisplay.SetSymbol(symbol);
        screenDisplay.DrawPolygon(geometry);
        screenDisplay.FinishDrawing();

我也没有收到任何鼠标事件,并且在开始绘制多边形时UI未被最小化。任何人都可以帮忙。

1 个答案:

答案 0 :(得分:0)