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

2024-02-19 03:04

本文主要是介绍【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行间距类型
OffsetXX轴偏移
OffsetYY轴偏移
ShadowColor阴影颜色
ShadowOffsetX阴影X轴偏移
ShadowOffsetY阴影Y轴偏移
SmallCaps字母大小写
Strikethrough删除线
Symbol文字符号
TextDirection文字方向
Underline下划线
WordSpacing单词间距

1、创建CIMTextSymbol

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

2、创建带描边的CIMTextSymbol

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

3、创建带引线的CIMTextSymbol

// 创建一个标注符号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、创建气泡符号标注(圆角矩形)

// 创建一个标注符号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、创建点索引符号标注

// 创建一个标注符号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

// 创建一个标注符号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、在视图中创建曲线文本

// 创建一条贝赛尔曲线
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");

这篇关于【ArcGIS Pro二次开发】(81):文本符号_CIMTextSymbol的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/723307

相关文章

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

最便宜的8口2.5G网管交换机! 水星SE109 Pro拆机测评

《最便宜的8口2.5G网管交换机!水星SE109Pro拆机测评》水星SE109Pro价格很便宜,水星SE109Pro,外观、接口,和SE109一样,区别Pro是网管型的,下面我们就来看看详细拆... 听说水星SE109 Pro开卖了,PDD卖 220元,于是买回来javascript拆机看看。推荐阅读:水