![](dotnetdiagramimages/image1117.png)
public sealed class ScaleBar : MapSurround, ArcGIS.Desktop.Mapping.IElement, System.ComponentModel.INotifyPropertyChanged, System.IComparable, System.IDisposable, System.IEquatable<Element>
Public NotInheritable Class ScaleBar Inherits MapSurround Implements ArcGIS.Desktop.Mapping.IElement, System.ComponentModel.INotifyPropertyChanged, System.IComparable, System.IDisposable, System.IEquatable(Of Element)
//Create a scale bar for a specific map frame and assign a scale bar style item. //Construct on the worker thread await QueuedTask.Run(() => { //Reference a North Arrow in a style StyleProjectItem stylePrjItm = Project.Current.GetItems<StyleProjectItem>().FirstOrDefault(item => item.Name == "ArcGIS 2D"); ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars("Double Alternating Scale Bar 1")[0]; //Build geometry Coordinate2D center = new Coordinate2D(7, 8); //Reference MF, create north arrow and add to layout MapFrame mf = layout.FindElement("New Map Frame") as MapFrame; if (mf == null) { ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Map frame not found", "WARNING"); return; } //At 2.x - //ScaleBar sbElm = LayoutElementFactory.Instance.CreateScaleBar(layout, center, mf, sbStyleItm); //sbElm.SetName("New Scale Bar"); //sbElm.SetWidth(2); //sbElm.SetX(6); //sbElm.SetY(7.5); var sbInfo = new ScaleBarInfo() { MapFrameName = mf.Name, ScaleBarStyleItem = sbStyleItm }; var sbElm = ElementFactory.Instance.CreateMapSurroundElement( layout, center.ToMapPoint(), sbInfo, "New Scale Bar") as ScaleBar; sbElm.SetWidth(2); sbElm.SetX(6); sbElm.SetY(7.5); });
//Must be on QueuedTask.Run(() => { ... //Build geometry Coordinate2D ll = new Coordinate2D(5.0, 6); Coordinate2D ur = new Coordinate2D(6.0, 7); Envelope sbEnv = EnvelopeBuilderEx.CreateEnvelope(ll, ur); //Reference a Scale Bar in a style StyleProjectItem stylePrjItm = Project.Current.GetItems<StyleProjectItem>() .FirstOrDefault(item => item.Name == "ArcGIS 2D"); ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars( "Alternating Scale Bar 1")[0]; //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars( // "Double Alternating Scale Bar 1")[0]; //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars( // "Hollow Scale Bar 1")[0]; //Create Scale Bar ScaleBarInfo sbInfo = new ScaleBarInfo() { MapFrameName = mapFrame.Name }; var sbElm = ElementFactory.Instance.CreateMapSurroundElement( layout, sbEnv, sbInfo) as ScaleBar;
//Must be on QueuedTask.Run(() => { ... //Build geometry Coordinate2D ll = new Coordinate2D(5.0, 8); Coordinate2D ur = new Coordinate2D(6.0, 9); Envelope sbEnv = EnvelopeBuilderEx.CreateEnvelope(ll, ur); //Reference a Scale Bar in a style StyleProjectItem stylePrjItm = Project.Current.GetItems<StyleProjectItem>() .FirstOrDefault(item => item.Name == "ArcGIS 2D"); ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars( "Scale Line 1")[0]; //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars( // "Stepped Scale Line")[0]; //ScaleBarStyleItem sbStyleItm = stylePrjItm.SearchScaleBars( // "Scale Line 2")[0]; //Create Scale Bar ScaleBarInfo sbInfo = new ScaleBarInfo() { MapFrameName = mapFrame.Name, ScaleBarStyleItem = sbStyleItm }; var sbElm = ElementFactory.Instance.CreateMapSurroundElement( layout, sbEnv, sbInfo, "ScaleBar Line") as ScaleBar;
//Update a map surround. //Perform on the worker thread QueuedTask.Run(() => { // Reference and load the layout associated with the layout item Layout layout = layoutItem.GetLayout(); if (layout != null) { // Reference a scale bar element by name MapSurround scaleBar = layout.FindElement("MyScaleBar") as MapSurround; // Reference a map frame element by name MapFrame mf = layout.FindElement("MyMapFrame") as MapFrame; if ((scaleBar != null) && (mf != null)) //Set the scale bar to the newly referenced map frame scaleBar.SetMapFrame(mf); } });
System.Object
ArcGIS.Desktop.Framework.Contracts.PropertyChangedBase
ArcGIS.Desktop.Layouts.Element
ArcGIS.Desktop.Layouts.MapSurround
ArcGIS.Desktop.Layouts.ScaleBar
Target Platforms: Windows 11, Windows 10