Skip to content

ProSnippets TextSymbols

UmaHarano edited this page May 6, 2024 · 14 revisions

All ProSnippets listed here are also used by the following sample code: TextSymbols sample code

Language:              C#  
Subject:               Map-Authoring  
Contributor:           ArcGIS Pro SDK Team <arcgisprosdk@esri.com>  
Organization:          esri, http://www.esri.com  
Date:                  1/2/2024  
ArcGIS Pro:            3.3  
Visual Studio:         2022  
.NET Target Framework: .Net 6  

TextSymbols

Creates a simple text symbol

Creates a simple black text symbol with a size of 8.5, Font Family "Corbel" and Font Style of "Regular". lineCallOut

private static Task<CIMTextSymbol> CreateSimpleTextAsync()
{
    return QueuedTask.Run <CIMTextSymbol>(() => 
    {
        //Create a simple text symbol
        return SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 8.5, "Corbel", "Regular");
    });
    
}

Creates a text symbol with a halo

Creates a text symbol with a red halo halo

private static Task<CIMTextSymbol> CreateTextSymbolWithHaloAsync()
{
    return QueuedTask.Run<CIMTextSymbol>(() =>
   {
       //create a polygon symbol for the halo
       var haloPoly = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB, SimpleFillStyle.Solid);
       //create text symbol using the halo polygon
       return SymbolFactory.Instance.ConstructTextSymbol(haloPoly, 10, "Arial", "Bold");
   });        
}

Checks to see if a font is available on the system

Returns a boolean value indicating if the font Arial Bold exists on the system. Specific font formats can be specified. For variable fonts, specific variations can be checked for.

private static bool CheckIfFontExists()
{
    return SymbolFactory.Instance.IsFontAvailable("Arial", "Bold", FontType.Unspecified, null);
}

Creates a simple line callout text symbol

Creates a simple line callout text symbol. The CIMSimpleLineCallout created is a dash-dot-dash line symbol with an offset of 10 from the geometry being labeled. lineCallOut

private static Task<CIMTextSymbol> CreateSimpleLineCalloutAsync()
{
    return QueuedTask.Run<CIMTextSymbol>(() => {
        //create a text symbol
        var textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 10, "Verdana", "Regular");
        //Create a line call out
        var lineCalloutSymbol = new CIMSimpleLineCallout();
        //Get a line symbol
        var lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot);                
        //assign the line symbol to the callout
        lineCalloutSymbol.LineSymbol = lineSymbol;
        //Offset for the text
        textSymbol.OffsetX = 10;
        textSymbol.OffsetY = 10;
        //Assign the callout to the text symbol
        textSymbol.Callout = lineCalloutSymbol;
        return textSymbol;
    });           
}

Creates a balloon callout text symbol

Creates a black banner balloon callout text symbol. The CIMBalloonCallout created is a rectangular polygon with rounded corners. lineCallOut

private static Task<CIMTextSymbol> CreateBalloonCalloutAsync()
{
    return QueuedTask.Run<CIMTextSymbol>(() =>
    {
        //create a text symbol
        var textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 11, "Corbel", "Regular");
        //A balloon callout
        var balloonCallout = new CIMBalloonCallout();
        //set the callout's style
        balloonCallout.BalloonStyle = BalloonCalloutStyle.RoundedRectangle;
        //Create a solid fill polygon symbol for the callout.
        var polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.BlackRGB, SimpleFillStyle.Solid);
        //Set the callout's background to be the black polygon symbol
        balloonCallout.BackgroundSymbol = polySymbol;
        //margin inside the callout to place the text
        balloonCallout.Margin = new CIMTextMargin
        {
                    Left = 5,
                    Right = 5,
                    Bottom = 5,
                    Top = 5
        };
        //assign the callout to the text symbol's callout property
        textSymbol.Callout = balloonCallout;
        return textSymbol;
    });
}

Creates a point callout text symbol

Creates a highway shield callout text symbol. The CIMPointSymbolCallout created is a highway shield point symbol from the ArcGIS 2D style. lineCallOut

private static Task<CIMTextSymbol> CreatePointCallOutAsync()           
{
    return QueuedTask.Run<CIMTextSymbol>(() =>
    {
        //create a text symbol
        var textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 6, "Tahoma", "Bold");
        //Create a call out
        var shieldCalloutSymbol = new CIMPointSymbolCallout();
        //Get a Shield symbolStyleItem from ArcGIS 2D StyleProjectitem
        var symbolStyleItem = GetPointSymbol("ArcGIS 2D", "Shield 1");             
        //assign the point symbol (Highway shield) to the callout
        shieldCalloutSymbol.PointSymbol = symbolStyleItem.Symbol as CIMPointSymbol;
        shieldCalloutSymbol.PointSymbol.SetSize(18.0); //set symbol size
        //Assign the callout to the text symbol
        textSymbol.Callout = shieldCalloutSymbol;
        return textSymbol;
    });
}

Creates a background callout text symbol

Creates a solid fill background text symbol with an Accent bar and leader line. The CIMBackgroundCallout created has a solid fill aqua polygon, with a black dash-dot-dash leader line and a solid accent bar. lineCallOut

private static Task<CIMTextSymbol> CreateBackgroundCalloutAsync()
{
    return QueuedTask.Run<CIMTextSymbol>(() =>
    {
        var textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 8, "Tahoma", "Bold");
        //Create a call out
        var backgroundCalloutSymbol = new CIMBackgroundCallout();
        //Leader line
        //Get a line symbol
        var lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot);
        //Create a solid fill polygon symbol for the callout.
        var aquaBackground = ColorFactory.Instance.CreateRGBColor(190, 255, 232, 100);
        var polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(aquaBackground, SimpleFillStyle.Solid);
        //assign the line to the callout
        backgroundCalloutSymbol.LeaderLineSymbol = lineSymbol;
        //Offset for the text
        textSymbol.OffsetX = 10;
        textSymbol.OffsetY = 10;
        //Assign the polygon to the background callout
        backgroundCalloutSymbol.BackgroundSymbol = polySymbol;
        //Accent bar
        var accentSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 2, SimpleLineStyle.Solid);
        backgroundCalloutSymbol.AccentBarSymbol = accentSymbol;
        //Set margins for the callout
        backgroundCalloutSymbol.Margin = new CIMTextMargin
        {
            Left = 5,
            Right = 5,
            Top = 5,
            Bottom = 5
        };
        
        //assign the callout to the textSymbol
        textSymbol.Callout = backgroundCalloutSymbol;
        return textSymbol;
    });
}
Clone this wiki locally