【ArcGIS Pro二次开发】(81):文本符号_CIMTextSymbol

CIMTextSymbol是用于绘制文本图形注释的文本符号。


0、属性

|---------------------|-----------------|
| Angel | 文本符号的放置角度 |
| BlockProgression | 多行文本的堆叠方向 |
| Callout | 引线 |
| DrawSoftHyphen | 连字符 |
| FlipAngle | 文本翻转(镜像)到位的角度 |
| FontEffects | 上下标 |
| FontEncoding | 获取文字的Encoding |
| FontFamilyName | 字体名称 |
| FontStyleName | 字形样式,例如粗体、斜体。 |
| FontType | 字体样式,如宋体。 |
| HaloSize | 描边大小 |
| HaloSymbol | 描边符号 |
| Height | 文本高度 |
| HorizontalAlignment | 文本与几何体水平对齐的对齐类型 |
| VerticalAlignment | 文本与几何体垂直对齐的对齐类型 |
| IndentAfter | 后缩进 |
| IndentBefore | 前缩进 |
| IndentFirstLine | 首行缩进 |
| LetterSpacing | 字间距 |
| LetterWidth | 字宽度 |
| LineGap | 行间距 |
| LineGapType | 行间距类型 |
| OffsetX | X轴偏移 |
| OffsetY | Y轴偏移 |
| ShadowColor | 阴影颜色 |
| ShadowOffsetX | 阴影X轴偏移 |
| ShadowOffsetY | 阴影Y轴偏移 |
| SmallCaps | 字母大小写 |
| Strikethrough | 删除线 |
| Symbol | 文字符号 |
| TextDirection | 文字方向 |
| Underline | 下划线 |
| WordSpacing | 单词间距 |


1、创建CIMTextSymbol

cs 复制代码
// 创建一个CIMTextSymbol
CIMTextSymbol textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlueRGB, 8, "Corbel", "Regular");

2、创建带描边的CIMTextSymbol

cs 复制代码
// 创建描边
CIMPolygonSymbol haloPoly = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB, SimpleFillStyle.Solid);
// 创建文本标注
CIMTextSymbol textSymbol = SymbolFactory.Instance.ConstructTextSymbol(haloPoly, 10, "Arial", "Bold");

3、创建带引线的CIMTextSymbol

cs 复制代码
// 创建一个标注符号CIMTextSymbol
CIMTextSymbol textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 10, "Verdana", "Regular");
// 创建一个引线CIMSimpleLineCallout
CIMSimpleLineCallout lineCalloutSymbol = new CIMSimpleLineCallout();
// 创建一个线符号CIMLineSymbol
CIMLineSymbol lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot);
// 将线符号应用给引线
lineCalloutSymbol.LineSymbol = lineSymbol;
// 设置标注文字的偏移量
textSymbol.OffsetX = 10;
textSymbol.OffsetY = 10;
// 应用引线给标注符号
textSymbol.Callout = lineCalloutSymbol;

4、创建气泡符号标注(圆角矩形)

cs 复制代码
// 创建一个标注符号CIMTextSymbol
CIMTextSymbol textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 11, "Corbel", "Regular");
// 创建一个气泡符号CIMBalloonCallout
CIMBalloonCallout balloonCallout = new CIMBalloonCallout();
// 设置气泡类型(圆角矩形)
balloonCallout.BalloonStyle = BalloonCalloutStyle.RoundedRectangle;
// 创建一个面符号CIMPolygonSymbol
CIMPolygonSymbol polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.BlackRGB, SimpleFillStyle.Solid);
// 应用气泡符号的底为面符号
balloonCallout.BackgroundSymbol = polySymbol;
// 设置放置文字的边距
balloonCallout.Margin = new CIMTextMargin
{
    Left = 5,
    Right = 5,
    Bottom = 5,
    Top = 5
};
// 应用文本符号
textSymbol.Callout = balloonCallout;

5、创建点索引符号标注

cs 复制代码
// 创建一个标注符号CIMTextSymbol
CIMTextSymbol textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 6, "Tahoma", "Bold");
// 创建一个点索引符号CIMPointSymbolCallout
CIMPointSymbolCallout shieldCalloutSymbol = new CIMPointSymbolCallout();
// 从样式中获取符号(这里简写,获取方法需细化)
var symbolStyleItem = GetPointSymbol("ArcGIS 2D", "Shield 1");
// 应用符号
shieldCalloutSymbol.PointSymbol = symbolStyleItem.Symbol as CIMPointSymbol;
// 设置大小
shieldCalloutSymbol.PointSymbol.SetSize(18.0); //set symbol size
// 应用文本符号
textSymbol.Callout = shieldCalloutSymbol;

6、创建带引线带边框的CIMTextSymbol

cs 复制代码
// 创建一个标注符号CIMTextSymbol
CIMTextSymbol textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 8, "Tahoma", "Bold");
// 创建一个索引底面框CIMBackgroundCallout
CIMBackgroundCallout backgroundCalloutSymbol = new CIMBackgroundCallout();
// 引线
// 创建一个线符号
CIMLineSymbol lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot);
// 创建一个面符号
CIMColor aquaBackground = ColorFactory.Instance.CreateRGBColor(190, 255, 232, 100);
CIMPolygonSymbol polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(aquaBackground, SimpleFillStyle.Solid);
// 应用引线
backgroundCalloutSymbol.LeaderLineSymbol = lineSymbol;
// 设置引线偏移量
textSymbol.OffsetX = 10;
textSymbol.OffsetY = 10;
// 应用面符号
backgroundCalloutSymbol.BackgroundSymbol = polySymbol;
// 设置边线
var accentSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 2, SimpleLineStyle.Solid);
backgroundCalloutSymbol.AccentBarSymbol = accentSymbol;
// 设置标注文字的偏移量
backgroundCalloutSymbol.Margin = new CIMTextMargin
{
    Left = 5,
    Right = 5,
    Top = 5,
    Bottom = 5
};
// 应用引线给标注符号
textSymbol.Callout = backgroundCalloutSymbol;

7、在视图中创建曲线文本

cs 复制代码
// 创建一条贝赛尔曲线
Coordinate2D pt1 = new Coordinate2D(3.6, 7.5);
Coordinate2D pt2 = new Coordinate2D(4.26, 8);
Coordinate2D pt3 = new Coordinate2D(4.93, 7.1);
Coordinate2D pt4 = new Coordinate2D(5.6, 7.5);
CubicBezierBuilderEx bez = new CubicBezierBuilderEx(pt1, pt2, pt3, pt4);
CubicBezierSegment bezSeg = bez.ToSegment();
Polyline bezPl = PolylineBuilderEx.CreatePolyline(bezSeg);

// 创建一个CIMTextSymbol
CIMTextSymbol sym = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 24, "Comic Sans MS", "Regular");
// 在视图中创建曲线文本
GraphicElement bezTxtElm = ElementFactory.Instance.CreateTextGraphicElement(layout, TextType.SplinedText, bezPl, sym, "Curved Text", "New Splinned Text");
相关推荐
AC赳赳老秦2 分钟前
企业级合规审计体系:用 OpenClaw 落地采集全链路留痕,自动生成合规审计报告
java·python·django·beautifulsoup·php·deepseek·openclaw
发量惊人的中年网工42 分钟前
如何验证DDoS高防真的生效?从源站隐藏到正常访问的完整验收方法
运维·网络·数据库·ddos
吃杠碰小鸡1 小时前
VsCode中开发Java项目
java·vscode
宠友信息1 小时前
内容社区源码开发实践解析,用Spring Boot打造1:1仿小红书源码平台
java·spring boot·redis·websocket·mysql·spring·uni-app
GuoFeng.Wan1 小时前
深入理解经典蓝牙的L2CAP协议
网络
行百里er1 小时前
加个依赖就生效?一行搞定 Spring Boot Starter 自动装配
java·后端·监控
月华路2 小时前
G1 新生代对象晋升老年代:实现机制与 GC 日志
java·jvm·算法
夜月yeyue2 小时前
SOME/IP-SD 服务发现故障
网络·单片机·网络协议·tcp/ip·安全·服务发现
程序员z72 小时前
深入理解 GMP 模型:Go 协程调度器的设计与调度场景全解析
服务器·网络·golang
AI人工智能+电脑小能手2 小时前
大白话说Java设计模式-34-命令模式(业务实战篇)
java·spring·设计模式·命令模式·异步任务·撤销重做·事务封装