This document is archived and information here might be outdated. Recommended version. |
Add a North Arrow to the Page Layout from the Map.
///<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(ESRI.ArcGIS.Carto.IPageLayout pageLayout, ESRI.ArcGIS.Carto.IMap map) { if(pageLayout == null || map == null) { return; } ESRI.ArcGIS.Geometry.IEnvelope envelope=new ESRI.ArcGIS.Geometry.EnvelopeClass(); envelope.PutCoords(0.2, 0.2, 5, 5); // 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; }
'''<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 Sub AddNorthArrow(ByVal pageLayout As ESRI.ArcGIS.Carto.IPageLayout, ByVal map As ESRI.ArcGIS.Carto.IMap) If pageLayout Is Nothing OrElse map Is Nothing Then Return End If Dim envelope As ESRI.ArcGIS.Geometry.IEnvelope=New ESRI.ArcGIS.Geometry.EnvelopeClass envelope.PutCoords(0.2, 0.2, 5, 5) ' Specify the location and size of the north arrow Dim uid As ESRI.ArcGIS.esriSystem.IUID=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 Dim graphicsContainer As ESRI.ArcGIS.Carto.IGraphicsContainer=TryCast(pageLayout, ESRI.ArcGIS.Carto.IGraphicsContainer) ' Dynamic Cast Dim activeView As ESRI.ArcGIS.Carto.IActiveView=TryCast(pageLayout, ESRI.ArcGIS.Carto.IActiveView) ' Dynamic Cast Dim frameElement As ESRI.ArcGIS.Carto.IFrameElement=graphicsContainer.FindFrame(map) Dim mapFrame As ESRI.ArcGIS.Carto.IMapFrame=TryCast(frameElement, ESRI.ArcGIS.Carto.IMapFrame) ' Dynamic Cast Dim mapSurroundFrame As ESRI.ArcGIS.Carto.IMapSurroundFrame=mapFrame.CreateSurroundFrame(TryCast(uid, ESRI.ArcGIS.esriSystem.UID), Nothing) ' Dynamic Cast Dim element As ESRI.ArcGIS.Carto.IElement=TryCast(mapSurroundFrame, ESRI.ArcGIS.Carto.IElement) ' Dynamic Cast element.Geometry=envelope element.Activate(activeView.ScreenDisplay) graphicsContainer.AddElement(element, 0) Dim mapSurround As ESRI.ArcGIS.Carto.IMapSurround=mapSurroundFrame.MapSurround ' Change out the default north arrow Dim markerNorthArrow As ESRI.ArcGIS.Carto.IMarkerNorthArrow=TryCast(mapSurround, ESRI.ArcGIS.Carto.IMarkerNorthArrow) ' Dynamic Cast Dim markerSymbol As ESRI.ArcGIS.Display.IMarkerSymbol=markerNorthArrow.MarkerSymbol Dim characterMarkerSymbol As ESRI.ArcGIS.Display.ICharacterMarkerSymbol=TryCast(markerSymbol, ESRI.ArcGIS.Display.ICharacterMarkerSymbol) ' Dynamic Cast characterMarkerSymbol.CharacterIndex=200 ' change the symbol for the North Arrow markerNorthArrow.MarkerSymbol=characterMarkerSymbol End Sub