ARCGIS PRO DSK GraphicsLayer创建文本要素
创始人
2024-12-16 16:04:34
0

一、判断GraphicsLayer层【地块注记】是否存在,如果不存在则新建、如果存在则删除所有要素

Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault() '获取当前map对象中的GetLayer图层 Await QueuedTask.Run(Sub()                          If GraphicsLayer Is Nothing = True Then                              '创建 GraphicsLayer                              If pmap.MapType <> MapType.Map Then Exit Sub       ' Not 2D                              Dim gl_param = New GraphicsLayerCreationParams                              gl_param.Name = "地块注记"                              '默认情况下会添加到目录的顶部                              GraphicsLayer = LayerFactory.Instance.CreateLayer(Of ArcGIS.Desktop.Mapping.GraphicsLayer)(gl_param, pmap)                          Else                              '全选文本                              Dim zj_zdmane As String = ""                                  zj_zdmane = "地块注记"                              Dim elements = GraphicsLayer.GetElementsAsFlattenedList().Where(Function(gele As GraphicElement) gele.Name.StartsWith(zj_zdmane)) ’获取GetLayer图层中定义的元素(本例为text)                              '删除选择text                              GraphicsLayer.SelectElements(elements)                              GraphicsLayer.RemoveElements(GraphicsLayer.GetSelectedElements())                          End If                          MapView.Active.Redraw(True)  '视图刷新                      End Sub)

二、CreateTextGraphicElement 方法
       ​GraphicElement CreateTextGraphicElement( 
                IElementContainer elementContainer,
                TextType textType,
                Geometry geometry,
                CIMTextSymbol textSymbol,
                string text,
                string elementName,
                bool select,                    【可选】
                ElementInfo elementInfo 【可选】
             )
             textType:要创建的文本图形的类型​

成员描述
CircleParagraph圆文本
EllipseParagraph椭圆文本
NoneNone- 默认
PointText点文本
PolygonParagraph多边形文本
RectangleParagraph矩形文本
SplinedText沿直线或曲线样条的文本

三、检查应用程序中是否有特定字体可用于 Pro 会话。 必须在 MCT 上调用此方法。IsFontAvailable 方法 (SymbolFactory)
public bool IsFontAvailable( 
                  string fontName,   
                  string fontStyle,
                  FontType fontType,
                  List fontVariationSettings
               )
               fontName:字体簇的名称。
               fontStyle :字体样式的名称。
               fontType:字体类型。
               fontVariationSettings:要应用的任何字体变体设置。可以为 null。
返回值:一个布尔值,表示字体是否可用。例如:

Dim BOOT=SymbolFactory.Instance.IsFontAvailable("Arial", "Bold", FontType.Unspecified, null)

四、创建文本
1、创建简单的文本符号(Creates a simple text symbol)创建一个大小为8.5、字体系列为“Corbel”、字体样式为“Regular”的简单黑色文本符号。

Await QueuedTask.Run(Sub()                          pmap = MapView.Active.Map  ‘获取激活的map对象                          Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象                          Dim TextSymbol =SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 8.5, "Corbel", "Regular")                          '文本的偏移量                          TextSymbol.OffsetX = 0.5                          TextSymbol.OffsetY = 0.5                          Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)                          Dim text As String = "Forest Grove"                          Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")                      End Sub) 

效果:

2、创建创建带有光晕环的文本符号(Creates a text symbol with a halo)

Await QueuedTask.Run(Sub()                          pmap = MapView.Active.Map  ‘获取激活的map对象                          Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象                                                    Dim haloPoly = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB, SimpleFillStyle.Solid)                           Dim TextSymbol = SymbolFactory.Instance.ConstructTextSymbol(haloPoly, 10, "Arial", "Bold")                          '文本的偏移量                          TextSymbol.OffsetX = 0.5                          TextSymbol.OffsetY = 0.5                          Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)                          Dim text As String = "Portland"                          Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")                      End Sub) 

 效果:

3、创建简单的牵引文本符号(Creates a text symbol with a halo)

Await QueuedTask.Run(Sub()                          pmap = MapView.Active.Map  ‘获取激活的map对象                          Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象                                                    Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 10, "Verdana", "Regular")                           Dim lineCalloutSymbol = new CIMSimpleLineCallout()                          Dim lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot)                          lineCalloutSymbol.LineSymbol = lineSymbol                          '文本的偏移量                          TextSymbol.OffsetX = 10                          TextSymbol.OffsetY = 10                          textSymbol.Callout = lineCalloutSymbol                          Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)                          Dim text As String = "Forest Grove"                          Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")                      End Sub)

效果:

4、创建圆角矩形的牵引文本框符号(Creates a balloon callout text symbol)

Await QueuedTask.Run(Sub()                          pmap = MapView.Active.Map  ‘获取激活的map对象                          Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象                          Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)                          Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 11, "Corbel", "Regular")                          Dim balloonCallout = new CIMBalloonCallout()                          BalloonCallout.BalloonStyle = BalloonCalloutStyle.RoundedRectangle                           Dim polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.BlackRGB, SimpleFillStyle.Solid)                          BalloonCallout.BackgroundSymbol = polySymbol                          BalloonCallout.Margin = new CIMTextMargin                          With BalloonCallout.Margin                             .Left = 5                             .Right = 5                             .Bottom = 5                             .Top = 5                         End With                         TextSymbol.Callout = balloonCallout                         Dim text As String = "Forest Grove"                         Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.RectangleParagraph, Location, TextSymbol, text, "地块注记")                      End Sub)

效果:

5、创建点符号的文本符号(Creates a point callout text symbol)

Await QueuedTask.Run(Sub()                          pmap = MapView.Active.Map  ‘获取激活的map对象                          Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象                                                    Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 6, "Tahoma", "Bold")                          Dim shieldCalloutSymbol = new CIMPointSymbolCallout()                          Dim symbolStyleItem = GetPointSymbol("ArcGIS 2D", "Shield 1")                                       ShieldCalloutSymbol.PointSymbol = symbolStyleItem.Symbol as CIMPointSymbol                          ShieldCalloutSymbol.PointSymbol.SetSize(18.0)                          TextSymbol.Callout = shieldCalloutSymbol                          Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)                          Dim text As String = "I5"                          Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")                      End Sub)

效果:

6、创建设置矩形背景色的牵引文本框符号(Creates a background callout text symbol)

Await QueuedTask.Run(Sub()                          pmap = MapView.Active.Map  ‘获取激活的map对象                          Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象                          Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)                          Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 8, "Tahoma", "Bold")                          Dim backgroundCalloutSymbol = new CIMBackgroundCallout()                          Dim lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot)                          Dim aquaBackground = ColorFactory.Instance.CreateRGBColor(190, 255, 232, 100)                          Dim polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(aquaBackground, SimpleFillStyle.Solid)                          BackgroundCalloutSymbol.LeaderLineSymbol = lineSymbol                          TextSymbol.OffsetX = 10                          TextSymbol.OffsetY = 10                          BackgroundCalloutSymbol.BackgroundSymbol = polySymbol                          Dim accentSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 2, SimpleLineStyle.Solid)                          BackgroundCalloutSymbol.AccentBarSymbol = accentSymbol                          BackgroundCalloutSymbol.Margin = new CIMTextMargin                          With BalloonCallout.Margin                               .Left = 5                               .Right = 5                               .Bottom = 5                               .Top = 5                         End With                         TextSymbol.Callout = backgroundCalloutSymbol                         Dim text As String = "Forest Grove"                         Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer,TextType.RectangleParagraph, poly, TextSymbol, text, "地块注记")                      End Sub)

效果:

相关内容

热门资讯

一分钟练习!开心联盟辅助器免费... 一分钟练习!开心联盟辅助器免费,先锋大厅辅助(辅助)竟然真的是有软件(哔哩哔哩)1、一分钟练习!开心...
第八分钟方针!天道手游辅助,皇... 第八分钟方针!天道手游辅助,皇豪互娱透视科技(辅助)一直真的是有下载(哔哩哔哩)该软件可以轻松地帮助...
一分钟步骤!多乐跑的快脚本,新... 一分钟步骤!多乐跑的快脚本,新荣耀平台辅助(辅助)本来是真的辅助器(哔哩哔哩)新荣耀平台辅助脚本下载...
5分钟指引!新二号辅助下载,随... 5分钟指引!新二号辅助下载,随意玩游戏平台官方挂开挂(辅助)真是是有软件(哔哩哔哩)1、不需要AI权...
两分钟手筋!哈灵脚本ios,新... 两分钟手筋!哈灵脚本ios,新上游反杀微信辅助(辅助)真是有挂app(哔哩哔哩)1、实时新上游反杀微...
八分钟烘培!新畅游互娱辅助,新... 您好,新畅游互娱辅助这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩家...
8分钟诀窍!阿拉透视辅助器,新... 8分钟诀窍!阿拉透视辅助器,新上游辅助真的假的(辅助)竟然有挂神器(哔哩哔哩)1.新上游辅助真的假的...
第8分钟手册!仙桃晃晃辅助插件... 第8分钟手册!仙桃晃晃辅助插件,海螺众娱脚本(辅助)其实存在有修改器(哔哩哔哩)1、很好的工具软件,...
第八分钟窍要!九游辅助工具,樱... 第八分钟窍要!九游辅助工具,樱花之盛正版辅助器免费(辅助)果然有挂修改器(哔哩哔哩)1、每一步都需要...
第一分钟讲义!新九天辅助,新全... 第一分钟讲义!新九天辅助,新全游辅助器(辅助)果然是真的安装(哔哩哔哩)新全游辅助器能透视中分为三种...