예제 #1
0
        private void Print_Load(object sender, EventArgs e)
        {
            //Mxd文件是否存在
            //******??????会打印两页
            if (axPageLayoutControl1.CheckMxFile(m_FileName))
            {
                //加载Mxd到PageLayout
                axPageLayoutControl1.LoadMxFile(m_FileName, "");

                IActiveView            activeView             = axPageLayoutControl1.ActiveView.FocusMap as IActiveView;
                IDisplayTransformation displayeTransformation = activeView.ScreenDisplay.DisplayTransformation;
                displayeTransformation.VisibleBounds = GIS.Common.DataEditCommon.g_pAxMapControl.Extent;
                displayeTransformation.Rotation      = axMap.Rotation;
                double angle  = Math.Round(displayeTransformation.Rotation, 0);
                ILayer player = GIS.Common.DataEditCommon.GetLayerByName(activeView.FocusMap, LayerNames.LAYER_ALIAS_MR_HCGZMWSYCLD);
                MyMapHelp.Angle_Symbol(player, -angle);
                player = GIS.Common.DataEditCommon.GetLayerByName(activeView.FocusMap, LayerNames.LAYER_ALIAS_MR_WSHLD);
                MyMapHelp.Angle_Symbol(player, -angle);
                player = GIS.Common.DataEditCommon.GetLayerByName(activeView.FocusMap, LayerNames.LAYER_ALIAS_MR_WSYLD);
                MyMapHelp.Angle_Symbol(player, -angle);
                //displayeTransformation.ReferenceScale = axMap.ReferenceScale;
                activeView.Refresh();

                m_graphicContainer = axPageLayoutControl1.PageLayout as IGraphicsContainer;
            }


            //MapCopy();

            InitToolBar();

            InitializePrintPreviewDialog();    //初始化打印预览对话框
            m_printDialog = new PrintDialog(); //打印对话框实例化
            InitializePageSetupDialog();       //初始化打印设置对话框
        }
        ///<summary>Add a North Arrow to the Page Layout from the Map.</summary>
        ///
        ///<param name="pageLayout">An IPageLayout interface.</param>
        ///<param name="map">An IMap interface.</param>
        ///
        ///<remarks></remarks>
        public void AddNorthArrow(IPageLayout pageLayout, IMap map)
        {
            if (pageLayout == null || map == null)
            {
                return;
            }
            ESRI.ArcGIS.Geometry.IEnvelope envelope = new ESRI.ArcGIS.Geometry.EnvelopeClass();
            envelope.PutCoords(1, 24, 5, 24); //  Specify the location and size of the north arrow

            ESRI.ArcGIS.esriSystem.IUID uid = new ESRI.ArcGIS.esriSystem.UIDClass();
            uid.Value = "esriCarto.MarkerNorthArrow";

            // Create a Surround. Set the geometry of the MapSurroundFrame to give it a location
            // Activate it and add it to the PageLayout's graphics container
            ESRI.ArcGIS.Carto.IGraphicsContainer graphicsContainer = pageLayout as ESRI.ArcGIS.Carto.IGraphicsContainer;                    // Dynamic Cast
            ESRI.ArcGIS.Carto.IActiveView        activeView        = pageLayout as ESRI.ArcGIS.Carto.IActiveView;                           // Dynamic Cast
            ESRI.ArcGIS.Carto.IFrameElement      frameElement      = graphicsContainer.FindFrame(map);
            ESRI.ArcGIS.Carto.IMapFrame          mapFrame          = frameElement as ESRI.ArcGIS.Carto.IMapFrame;                           // Dynamic Cast
            ESRI.ArcGIS.Carto.IMapSurroundFrame  mapSurroundFrame  = mapFrame.CreateSurroundFrame(uid as ESRI.ArcGIS.esriSystem.UID, null); // Dynamic Cast
            ESRI.ArcGIS.Carto.IElement           element           = mapSurroundFrame as ESRI.ArcGIS.Carto.IElement;                        // Dynamic Cast
            element.Geometry = envelope;
            element.Activate(activeView.ScreenDisplay);
            graphicsContainer.AddElement(element, 0);
            ESRI.ArcGIS.Carto.IMapSurround mapSurround = mapSurroundFrame.MapSurround;

            // Change out the default north arrow
            ESRI.ArcGIS.Carto.IMarkerNorthArrow        markerNorthArrow      = mapSurround as ESRI.ArcGIS.Carto.IMarkerNorthArrow;         // Dynamic Cast
            ESRI.ArcGIS.Display.IMarkerSymbol          markerSymbol          = markerNorthArrow.MarkerSymbol;
            ESRI.ArcGIS.Display.ICharacterMarkerSymbol characterMarkerSymbol = markerSymbol as ESRI.ArcGIS.Display.ICharacterMarkerSymbol; // Dynamic Cast
            characterMarkerSymbol.CharacterIndex = 200;                                                                                    // change the symbol for the North Arrow
            markerNorthArrow.MarkerSymbol        = characterMarkerSymbol;
        }
예제 #3
0
        // ArcGIS Snippet Title:
        // Add Legend
        //
        // Long Description:
        // Add a Legend to the Page Layout from the Map.
        //
        // Add the following references to the project:
        // ESRI.ArcGIS.Carto
        // ESRI.ArcGIS.Geometry
        // ESRI.ArcGIS.System
        //
        // Intended ArcGIS Products for this snippet:
        // ArcGIS Desktop (ArcEditor, ArcInfo, ArcView)
        // ArcGIS Engine
        // ArcGIS Server
        //
        // Applicable ArcGIS Product Versions:
        // 9.2
        // 9.3
        // 9.3.1
        // 10.0
        //
        // Required ArcGIS Extensions:
        // (NONE)
        //
        // Notes:
        // This snippet is intended to be inserted at the base level of a Class.
        // It is not intended to be nested within an existing Method.
        //

        ///<summary>Add a Legend to the Page Layout from the Map.</summary>
        ///
        ///<param name="pageLayout">An IPageLayout interface.</param>
        ///<param name="map">An IMap interface.</param>
        ///<param name="posX">A System.Double that is X coordinate value in page units for the start of the Legend. Example: 2.0</param>
        ///<param name="posY">A System.Double that is Y coordinate value in page units for the start of the Legend. Example: 2.0</param>
        ///<param name="legW">A System.Double that is length in page units of the Legend in both the X and Y direction. Example: 5.0</param>
        ///
        ///<remarks></remarks>
        public void AddLegend(ESRI.ArcGIS.Carto.IPageLayout pageLayout, ESRI.ArcGIS.Carto.IMap map, System.Double posX, System.Double posY, System.Double legW)
        {
            if (pageLayout == null || map == null)
            {
                return;
            }
            ESRI.ArcGIS.Carto.IGraphicsContainer graphicsContainer = pageLayout as ESRI.ArcGIS.Carto.IGraphicsContainer;              // Dynamic Cast
            ESRI.ArcGIS.Carto.IMapFrame          mapFrame          = graphicsContainer.FindFrame(map) as ESRI.ArcGIS.Carto.IMapFrame; // Dynamic Cast
            ESRI.ArcGIS.esriSystem.IUID          uid = new ESRI.ArcGIS.esriSystem.UIDClass();
            uid.Value = "esriCarto.Legend";
            ESRI.ArcGIS.Carto.IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame((ESRI.ArcGIS.esriSystem.UID)uid, null); // Explicit Cast

            //Get aspect ratio
            ESRI.ArcGIS.Carto.IQuerySize querySize = mapSurroundFrame.MapSurround as ESRI.ArcGIS.Carto.IQuerySize; // Dynamic Cast
            System.Double w = 0;
            System.Double h = 0;
            querySize.QuerySize(ref w, ref h);
            System.Double aspectRatio = w / h;

            ESRI.ArcGIS.Geometry.IEnvelope envelope = new ESRI.ArcGIS.Geometry.EnvelopeClass();
            envelope.PutCoords(posX, posY, (posX * legW), (posY * legW / aspectRatio));
            ESRI.ArcGIS.Carto.IElement element = mapSurroundFrame as ESRI.ArcGIS.Carto.IElement; // Dynamic Cast
            element.Geometry = envelope;
            graphicsContainer.AddElement(element, 0);
        }
예제 #4
0
        //function for adding a graphics layer
        public void addGraphicLayer()
        {
            graphicsLayer = new GlobeGraphicsLayerClass();
            ILayer pLayer;

            pLayer      = (ILayer)graphicsLayer;
            pLayer.Name = "CameraPathGraphicsLayer";
            globe.AddLayerType(pLayer, esriGlobeLayerType.esriGlobeLayerTypeDraped, true);
        }
예제 #5
0
        private void btnClearPath_Click(object sender, EventArgs e)
        {
            IMap map = (IMap)GetActiveView;

            graphicsContainer = (ESRI.ArcGIS.Carto.IGraphicsContainer)map; // Explicit Cast
            graphicsContainer.DeleteAllElements();
            Variables.s_NumberOfPoints = 0;
            Variables.s_LstPoints.Clear();
            Variables.s_polyline = null;
            GetActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
        }
예제 #6
0
        public void AddGraphic(IMap map, IGeometry geometry, IRgbColor rgbColor, IRgbColor outlineRgbColor)
        {
            if (geometry == null)
            {
                return;
            }
            ESRI.ArcGIS.Carto.IGraphicsContainer graphicsContainer = (ESRI.ArcGIS.Carto.IGraphicsContainer)map; // Explicit Cast
            ESRI.ArcGIS.Carto.IElement           element           = null;
            if ((geometry.GeometryType) == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
            {
                // Marker symbols
                ESRI.ArcGIS.Display.ISimpleMarkerSymbol simpleMarkerSymbol = new ESRI.ArcGIS.Display.SimpleMarkerSymbolClass();
                simpleMarkerSymbol.Color        = rgbColor;
                simpleMarkerSymbol.Outline      = true;
                simpleMarkerSymbol.OutlineColor = outlineRgbColor;
                simpleMarkerSymbol.Size         = 15;
                simpleMarkerSymbol.Style        = ESRI.ArcGIS.Display.esriSimpleMarkerStyle.esriSMSCircle;

                ESRI.ArcGIS.Carto.IMarkerElement markerElement = new ESRI.ArcGIS.Carto.MarkerElementClass();
                markerElement.Symbol = simpleMarkerSymbol;
                element = (ESRI.ArcGIS.Carto.IElement)markerElement; // Explicit Cast
            }
            else if ((geometry.GeometryType) == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
            {
                //  Line elements
                ESRI.ArcGIS.Display.ISimpleLineSymbol simpleLineSymbol = new ESRI.ArcGIS.Display.SimpleLineSymbolClass();
                simpleLineSymbol.Color = rgbColor;
                simpleLineSymbol.Style = ESRI.ArcGIS.Display.esriSimpleLineStyle.esriSLSSolid;
                simpleLineSymbol.Width = 5;

                ESRI.ArcGIS.Carto.ILineElement lineElement = new ESRI.ArcGIS.Carto.LineElementClass();
                lineElement.Symbol = simpleLineSymbol;
                element            = (ESRI.ArcGIS.Carto.IElement)lineElement; // Explicit Cast
            }
            else if ((geometry.GeometryType) == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
            {
                // Polygon elements
                ESRI.ArcGIS.Display.ISimpleFillSymbol simpleFillSymbol = new ESRI.ArcGIS.Display.SimpleFillSymbolClass();
                simpleFillSymbol.Color = rgbColor;
                simpleFillSymbol.Style = ESRI.ArcGIS.Display.esriSimpleFillStyle.esriSFSForwardDiagonal;
                ESRI.ArcGIS.Carto.IFillShapeElement fillShapeElement = new ESRI.ArcGIS.Carto.PolygonElementClass();
                fillShapeElement.Symbol = simpleFillSymbol;
                element = (ESRI.ArcGIS.Carto.IElement)fillShapeElement; // Explicit Cast
            }
            if (!(element == null))
            {
                element.Geometry = geometry;
                graphicsContainer.AddElement(element, 0);
            }
        }
        ///<summary>Add a Legend to the Page Layout from the Map.</summary>
        ///
        ///<param name="pageLayout">An IPageLayout interface.</param>
        ///<param name="map">An IMap interface.</param>
        ///<param name="posX">A System.Double that is X coordinate value in page units for the start of the Legend. Example: 2.0</param>
        ///<param name="posY">A System.Double that is Y coordinate value in page units for the start of the Legend. Example: 2.0</param>
        ///<param name="legW">A System.Double that is length in page units of the Legend in both the X and Y direction. Example: 5.0</param>
        ///
        ///<remarks></remarks>
        public void AddLegend(IPageLayout pageLayout, IMap map, Double posX, Double posY, Double legW)
        {
            if (pageLayout == null || map == null)
            {
                return;
            }
            ESRI.ArcGIS.Carto.IGraphicsContainer graphicsContainer = pageLayout as ESRI.ArcGIS.Carto.IGraphicsContainer;              // Dynamic Cast
            ESRI.ArcGIS.Carto.IMapFrame          mapFrame          = graphicsContainer.FindFrame(map) as ESRI.ArcGIS.Carto.IMapFrame; // Dynamic Cast


            ESRI.ArcGIS.esriSystem.IUID uid = new ESRI.ArcGIS.esriSystem.UIDClass();
            uid.Value = "esriCarto.Legend";
            ESRI.ArcGIS.Carto.IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame((ESRI.ArcGIS.esriSystem.UID)uid, null); // Explicit Cast

            //Get aspect ratio
            ESRI.ArcGIS.Carto.IQuerySize querySize = mapSurroundFrame.MapSurround as ESRI.ArcGIS.Carto.IQuerySize; // Dynamic Cast
            System.Double w = 0;
            System.Double h = 0;
            querySize.QuerySize(ref w, ref h);
            System.Double aspectRatio = w / h;

            //
            ILegend pLegend = mapSurroundFrame.MapSurround as ILegend;

            pLegend.Title = "图例";
            pLegend.Format.TitlePosition = esriRectanglePosition.esriLeftSide | esriRectanglePosition.esriTopSide;
            pLegend.Format.TitleSymbol   = new TextSymbolClass()
            {
                Font = GetFontDisp(24)
            };
            pLegend.get_Item(0).ShowLayerName   = true;
            pLegend.get_Item(0).LayerNameSymbol = new TextSymbolClass()
            {
                Font = GetFontDisp(22)
            };
            pLegend.get_Item(0).LegendClassFormat.LabelSymbol = new TextSymbolClass()
            {
                Font = GetFontDisp(20)
            };

            ESRI.ArcGIS.Geometry.IEnvelope envelope = new ESRI.ArcGIS.Geometry.EnvelopeClass();
            envelope.PutCoords(posX, posY, (posX * legW), (posY * legW / aspectRatio));
            ESRI.ArcGIS.Carto.IElement element = mapSurroundFrame as ESRI.ArcGIS.Carto.IElement; // Dynamic Cast

            element.Geometry = envelope;
            graphicsContainer.AddElement(element, 0);
        }
        ///<summary>Add a Scale Bar to the Page Layout from the Map.</summary>
        ///
        ///<param name="pageLayout">An IPageLayout interface.</param>
        ///<param name="map">An IMap interface.</param>
        ///
        ///<remarks></remarks>
        public void AddScalebar(IPageLayout pageLayout, IMap map)
        {
            if (pageLayout == null || map == null)
            {
                return;
            }

            ESRI.ArcGIS.Geometry.IEnvelope envelope = new ESRI.ArcGIS.Geometry.EnvelopeClass();
            envelope.PutCoords(7, 1, 25, 1.5); // Specify the location and size of the scalebar
            ESRI.ArcGIS.esriSystem.IUID uid = new ESRI.ArcGIS.esriSystem.UIDClass();
            uid.Value = "esriCarto.AlternatingScaleBar";

            // Create a Surround. Set the geometry of the MapSurroundFrame to give it a location
            // Activate it and add it to the PageLayout's graphics container
            ESRI.ArcGIS.Carto.IGraphicsContainer graphicsContainer = pageLayout as ESRI.ArcGIS.Carto.IGraphicsContainer;                    // Dynamic Cast
            ESRI.ArcGIS.Carto.IActiveView        activeView        = pageLayout as ESRI.ArcGIS.Carto.IActiveView;                           // Dynamic Cast
            ESRI.ArcGIS.Carto.IFrameElement      frameElement      = graphicsContainer.FindFrame(map);
            ESRI.ArcGIS.Carto.IMapFrame          mapFrame          = frameElement as ESRI.ArcGIS.Carto.IMapFrame;                           // Dynamic Cast
            ESRI.ArcGIS.Carto.IMapSurroundFrame  mapSurroundFrame  = mapFrame.CreateSurroundFrame(uid as ESRI.ArcGIS.esriSystem.UID, null); // Dynamic Cast
            ESRI.ArcGIS.Carto.IElement           element           = mapSurroundFrame as ESRI.ArcGIS.Carto.IElement;                        // Dynamic Cast
            element.Geometry = envelope;
            element.Activate(activeView.ScreenDisplay);
            graphicsContainer.AddElement(element, 0);
            ESRI.ArcGIS.Carto.IMapSurround mapSurround = mapSurroundFrame.MapSurround;


            ESRI.ArcGIS.Carto.IScaleBar markerScaleBar = ((ESRI.ArcGIS.Carto.IScaleBar)(mapSurround));

            markerScaleBar.LabelSymbol = new TextSymbolClass()
            {
                Font = GetFontDisp(20)
            };
            markerScaleBar.UnitLabelSymbol = new TextSymbolClass()
            {
                Font = GetFontDisp(20)
            };

            markerScaleBar.LabelPosition = ESRI.ArcGIS.Carto.esriVertPosEnum.esriBelow;
            markerScaleBar.UseMapSettings();
        }
예제 #9
0
        private void Print_Load(object sender, EventArgs e)
        {
            //Mxd文件是否存在
            //******??????会打印两页
            if (axPageLayoutControl1.CheckMxFile(m_FileName))
            {
                //加载Mxd到PageLayout
                axPageLayoutControl1.LoadMxFile(m_FileName, "");

                IActiveView activeView = axPageLayoutControl1.ActiveView.FocusMap as IActiveView;
                IDisplayTransformation displayeTransformation = activeView.ScreenDisplay.DisplayTransformation;
                displayeTransformation.VisibleBounds = GIS.Common.DataEditCommon.g_pAxMapControl.Extent;
                displayeTransformation.Rotation = axMap.Rotation;
                double angle = Math.Round(displayeTransformation.Rotation, 0);
                ILayer player = GIS.Common.DataEditCommon.GetLayerByName(activeView.FocusMap, LayerNames.LAYER_ALIAS_MR_HCGZMWSYCLD);
                MyMapHelp.Angle_Symbol(player, -angle);
                player = GIS.Common.DataEditCommon.GetLayerByName(activeView.FocusMap, LayerNames.LAYER_ALIAS_MR_WSHLD);
                MyMapHelp.Angle_Symbol(player, -angle);
                player = GIS.Common.DataEditCommon.GetLayerByName(activeView.FocusMap, LayerNames.LAYER_ALIAS_MR_WSYLD);
                MyMapHelp.Angle_Symbol(player, -angle);
                //displayeTransformation.ReferenceScale = axMap.ReferenceScale;
                activeView.Refresh();

                m_graphicContainer = axPageLayoutControl1.PageLayout as IGraphicsContainer;
            }

            //MapCopy();

            InitToolBar();

            InitializePrintPreviewDialog(); //初始化打印预览对话框
            m_printDialog = new PrintDialog(); //打印对话框实例化
            InitializePageSetupDialog(); //初始化打印设置对话框
        }
 //function for adding a graphics layer
 public void addGraphicLayer()
 {
     graphicsLayer = new GlobeGraphicsLayerClass();
     ILayer pLayer;
     pLayer = (ILayer)graphicsLayer;
     pLayer.Name = "CameraPathGraphicsLayer";
     globe.AddLayerType(pLayer, esriGlobeLayerType.esriGlobeLayerTypeDraped, true);
 }