arcgis气泡标注箭头设置
kuaidi.ping-jia.net 作者:佚名 更新日期:2024-07-05
ArcGISengine中⽓泡标注的添加、修改!
ArcGIS engine中⽓泡标注,是我们在编辑图形中⼀个重要的⼯具,能提供注释功能,下⾯的介绍怎么来编程实现callout的添加,以及怎么去修改它们!
// 在Mapcontrol的mouseDown中添加下列内容,来添加⽓泡注释功能:callout.
privatevoid axMapControl1_OnMouseDown(object sender,IMapControlEvents2_OnMouseDownEvent e)
{
axMapControl1.CurrentTool = null;
IPoint pPoint ;
pPoint = new PointClass();
pPoint.PutCoords(e.mapX, e.mapY);
IFormattedTextSymbol pTextSymbol = newTextSymbolClass();
pTextSymbol.Background =CreateBalloonCallout(e.mapX, e.mapY) asITextBackground;
pTextSymbol.Direction =esriTextDirection.esriTDAngle;
pTextSymbol.Angle = 15;
ITextElement pTextElement = newTextElementClass();
pTextElement.Symbol = pTextSymbol asITextSymbol;
pTextElement.Text = "MaDeSheng";
IElement ptexte = pTextElement asIElement;
pPoint = new PointClass();
pPoint.PutCoords(e.mapX * 0.90, e.mapY*1.1);
ptexte.Geometry = pPoint as IGeometry;
IMap pMap = axMapControl1.Map;
IGraphicsContainer pGraphicsContainer = pMap asIGraphicsContainer;
pGraphicsContainer.AddElement(pTextElement asIElement, 0);
this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null, null);
}
红颜⾊的部分是产⽣⽓泡背景,具体程序如下:
public IBalloonCalloutCreateBalloonCallout(double x, double y)
{
IRgbColor pRgbClr = newRgbColorClass();
pRgbClr.Red =225;
pRgbClr.Blue =225;
pRgbClr.Green =225;
ISimpleFillSymbol pSmplFill =new SimpleFillSymbolClass();
pSmplFill.Color =pRgbClr;
pSmplFill.Style =esriSimpleFillStyle.esriSFSSolid;
IBalloonCallout pBllnCallout= new BalloonCalloutClass();
//pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRectangle;
pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRoundedRectangle;
pBllnCallout.Symbol =pSmplFill;
pBllnCallout.LeaderTolerance= 5;
IPoint pPoint = newESRI.ArcGIS.Geometry.PointClass();
pPoint.X =x;
pPoint.Y =y;
pBllnCallout.AnchorPoint =pPoint;
returnpBllnCallout;
}
那么添加了之后如何修改呢?
双击事件!
private void axMapControl1_OnDoubleClick(objectsender, IMapControlEvents2_OnDoubleClickEvent e)
{
if(e.button ==1)
{
//标注的修改
if(((axMapControl1.CurrentTool) as ICommand).Name =="ControlToolsGraphicEleme nt_SelectTool")//这⼀句的判断很⽜B,我当时考虑了半天才搞出来。难点呀!toolbarControl中要加载esriControls.ControlsSelectTool⼯具
{
IPoint pPoint = new PointClass();
pPoint.PutCoords(e.mapX, e.mapY);
IMap pMap = axMapControl1.Map;
IGraphicsContainer pGraphicsContainer = pMap asIGraphicsContainer;
IEnumElement pEnumElement =pGraphicsContainer.LocateElements(pPoint, 10);
if (pEnumElement != null)
{
IElementpElement = pEnumElement.Next();
if(pElement is ITextElement)
{
ITextElement ptextElement =pElement as ITextElement;
labelEditCallout pLabelEditCallout = newlabelEditCallout(ptextElement.Text,ptextElement.Symbol);
pLabelEditCallout.ShowDialog();
ptextElement.Text =pLabelEditCallout.inputText;
ptextElement.Symbol =pLabelEditCallout.textSymbol;
pGraphicsContainer.DeleteElement(pElement);
pGraphicsContainer.AddElement(pElement,0);
//这两句可以⽤pGraphicsContainer.UpdataElement(pElement);来代替
this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null, null);
}
}
}
}
}
labelEditCallout是我⾃⼰弄的⼀个修改样式,其实很简单的⼀个页⾯,截图如下:
具体,代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingESRI.ArcGIS.Display;
usingESRI.ArcGIS.Geometry;
namespaceEdit
{
public partial class labelEditCallout :Form
{
publicstring inputText = "";
publicITextSymbol textSymbol;
privatebool ModifFillColor = false;
publiclabelEditCallout(string s,ITextSymbol texSy)
{
inputText =s;
textSymbol =texSy;
InitializeComponent();
}
privatevoid labelEditCallout_Load(object sender, EventArgse)
{
textBox1.Text =inputText;
comboBox1.Items.Add("矩形框");
comboBox1.Items.Add("圆⾓矩形");
//comboBox1.Items.Add("Oval");
comboBox1.SelectedIndex = 1;
}
publicIColor ConvertColorToIColor(Color color)
{
IColor pColor = newRgbColorClass();
pColor.RGB = color.B * 65536+ color.G * 256 + color.R;
returnpColor;
}
privatevoid button2_Click(object sender, EventArgs e)
{
IBalloonCallout textBack =(((IFormattedTextSymbol)textSymbol).Background) asIBalloonCallout; IFillSymbol pOldFill =textBack.Symbol;
IPoint pPoint =textBack.AnchorPoint;
ISimpleFillSymbol pSmplFill =new SimpleFillSymbolClass();
pSmplFill.Style =esriSimpleFillStyle.esriSFSSolid;
if(ModifFillColor)
{
pSmplFill.Color =ConvertColorToIColor(this.button1.BackColor);
}
else
pSmplFill.Color =pOldFill.Color;
IBalloonCallout pBllnCallout= new BalloonCalloutClass();
switch(comboBox1.Text)
{
case"矩形框":
pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRectangle;
break;
case"圆⾓矩形":
pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRoundedRectangle;
break;
//case"Oval":
// pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSOval;
// break;
}
pBllnCallout.Symbol =pSmplFill;
pBllnCallout.LeaderTolerance= 5;
pBllnCallout.AnchorPoint =pPoint;
IFormattedTextSymbolpTextSymbol = new
1.打开arcgis,加入线数据。

2.开始编辑数据。

3.然后,点击创建要素工具。
arcgis气泡标注箭头设置
答:// 在Mapcontrol的mouseDown中添加下列内容,来添加⽓泡注释功能:callout.privatevoid axMapControl1_OnMouseDown(object sender,IMapControlEvents2_OnMouseDownEvent e){ axMapControl1.CurrentTool = null;IPoint pPoint ;pPoint = new PointClass();pPoint.PutCoords(e.mapX, e.mapY);IF...
arcgis里 气球提示符号为啥没了箭头
答:这个要自己设置的,右键文本框→属性→编辑属性→高级文本,然后勾选文本背景进行设置。
气泡图的ArcGIS:创建气泡图
答:单击 X 字段(可选) 下拉箭头(如果想要提供 x 值),然后选择要绘成图表的字段。 X 标注字段可用于指定一个不同的字段来标注气泡图的水平轴。 默认情况下,输入数据的值将被添加到图表的图例中。可通过取消选中添加到图例复选框来禁用此设置。 要使用对应的值来标记数据点,请选中显示标注(注...
arcgis用箭头标注距离
答:arcgis用箭头标注距离方式如下:1、打开arcgis,加入线数据。2、开始编辑数据。3、点击创建要素工具。4、点击模板中的线。5、打开数据下的线型,选择箭头,再点确定。ArcGIS是计算机制图应用,包含全球范围内底图地图数据、应用程序以及可配置应用模板和开发人员使用GIS工具和API,用于创建Web地图发布GIS服务,...
arcgis线加箭头了,但箭头不能变色
答:矢量图层改变颜色要右键点击所选图层的属性,在分类对话框中选择分类,就可以改变颜色了。shp文件自身不能保存颜色等样式,要想颜色等样式不变化,可以保存个MXD工程文件,或者把shp文件导入数据库中就编辑保存样式就可以了。先是重新安装GIS软件,尤其是注意清理注册表,很有可能是软件受损;如果还是不行,...
arcgis为hydrant子类定义标注格式是什么?
答:在ArcGIS中,Hydrant是Fire Hydrant要素类的子类,其定义的标注格式可以根据实际需要进行设置,以下是一些可能的标注格式示例:简单标注:可以将Hydrant要素的一个属性(例如ID号)作为标注文本,使用单一的字体、颜色和大小来显示标注文本。复合标注:可以将Hydrant要素的多个属性(例如ID号、位置、地名等)组合...
arcgis中根据点的属性值画出不同方向的箭头
答:可以参考风向图的制作,里面有U,V矢量的制作,调整旋转方向跟大小就可以显示出上面箭头
arcgis图框中怎么画一个箭头
答:有个叫drawing什么的绘图工具条,里面有你要的箭头及很多其它形状
arcgis怎么反转箭头
答:点击编辑按钮。点击你期望改变方向的线。在草图的任何部位上右击并点击Flip。(草图方向被反转过来了,第一个节点变成了最后一个,并被标记为红色。)当完成了线的修改,右击草图的任何部分,并点击Finish Sketch。使用Edit工具双击要素,即可置为Modify Feature状态,并显示要素草图。编辑时,双击草图的最后...
arcgis箭头前多出来
答:没有编辑线要素。首先要先添加线要素,然后对其编辑,先要创建要素,然后选择模板的线,就不会有多出来的,如果不需要的可以删掉。也可以对分出的箭头进行标注,就能知道这个线代表着什么,也能够根据点的属性画出不同的方向的箭头,需要的也可以参照风向图的制作,矢量的制作,来调整旋转方向的大小。
ArcGIS engine中⽓泡标注,是我们在编辑图形中⼀个重要的⼯具,能提供注释功能,下⾯的介绍怎么来编程实现callout的添加,以及怎么去修改它们!
// 在Mapcontrol的mouseDown中添加下列内容,来添加⽓泡注释功能:callout.
privatevoid axMapControl1_OnMouseDown(object sender,IMapControlEvents2_OnMouseDownEvent e)
{
axMapControl1.CurrentTool = null;
IPoint pPoint ;
pPoint = new PointClass();
pPoint.PutCoords(e.mapX, e.mapY);
IFormattedTextSymbol pTextSymbol = newTextSymbolClass();
pTextSymbol.Background =CreateBalloonCallout(e.mapX, e.mapY) asITextBackground;
pTextSymbol.Direction =esriTextDirection.esriTDAngle;
pTextSymbol.Angle = 15;
ITextElement pTextElement = newTextElementClass();
pTextElement.Symbol = pTextSymbol asITextSymbol;
pTextElement.Text = "MaDeSheng";
IElement ptexte = pTextElement asIElement;
pPoint = new PointClass();
pPoint.PutCoords(e.mapX * 0.90, e.mapY*1.1);
ptexte.Geometry = pPoint as IGeometry;
IMap pMap = axMapControl1.Map;
IGraphicsContainer pGraphicsContainer = pMap asIGraphicsContainer;
pGraphicsContainer.AddElement(pTextElement asIElement, 0);
this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null, null);
}
红颜⾊的部分是产⽣⽓泡背景,具体程序如下:
public IBalloonCalloutCreateBalloonCallout(double x, double y)
{
IRgbColor pRgbClr = newRgbColorClass();
pRgbClr.Red =225;
pRgbClr.Blue =225;
pRgbClr.Green =225;
ISimpleFillSymbol pSmplFill =new SimpleFillSymbolClass();
pSmplFill.Color =pRgbClr;
pSmplFill.Style =esriSimpleFillStyle.esriSFSSolid;
IBalloonCallout pBllnCallout= new BalloonCalloutClass();
//pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRectangle;
pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRoundedRectangle;
pBllnCallout.Symbol =pSmplFill;
pBllnCallout.LeaderTolerance= 5;
IPoint pPoint = newESRI.ArcGIS.Geometry.PointClass();
pPoint.X =x;
pPoint.Y =y;
pBllnCallout.AnchorPoint =pPoint;
returnpBllnCallout;
}
那么添加了之后如何修改呢?
双击事件!
private void axMapControl1_OnDoubleClick(objectsender, IMapControlEvents2_OnDoubleClickEvent e)
{
if(e.button ==1)
{
//标注的修改
if(((axMapControl1.CurrentTool) as ICommand).Name =="ControlToolsGraphicEleme nt_SelectTool")//这⼀句的判断很⽜B,我当时考虑了半天才搞出来。难点呀!toolbarControl中要加载esriControls.ControlsSelectTool⼯具
{
IPoint pPoint = new PointClass();
pPoint.PutCoords(e.mapX, e.mapY);
IMap pMap = axMapControl1.Map;
IGraphicsContainer pGraphicsContainer = pMap asIGraphicsContainer;
IEnumElement pEnumElement =pGraphicsContainer.LocateElements(pPoint, 10);
if (pEnumElement != null)
{
IElementpElement = pEnumElement.Next();
if(pElement is ITextElement)
{
ITextElement ptextElement =pElement as ITextElement;
labelEditCallout pLabelEditCallout = newlabelEditCallout(ptextElement.Text,ptextElement.Symbol);
pLabelEditCallout.ShowDialog();
ptextElement.Text =pLabelEditCallout.inputText;
ptextElement.Symbol =pLabelEditCallout.textSymbol;
pGraphicsContainer.DeleteElement(pElement);
pGraphicsContainer.AddElement(pElement,0);
//这两句可以⽤pGraphicsContainer.UpdataElement(pElement);来代替
this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null, null);
}
}
}
}
}
labelEditCallout是我⾃⼰弄的⼀个修改样式,其实很简单的⼀个页⾯,截图如下:
具体,代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingESRI.ArcGIS.Display;
usingESRI.ArcGIS.Geometry;
namespaceEdit
{
public partial class labelEditCallout :Form
{
publicstring inputText = "";
publicITextSymbol textSymbol;
privatebool ModifFillColor = false;
publiclabelEditCallout(string s,ITextSymbol texSy)
{
inputText =s;
textSymbol =texSy;
InitializeComponent();
}
privatevoid labelEditCallout_Load(object sender, EventArgse)
{
textBox1.Text =inputText;
comboBox1.Items.Add("矩形框");
comboBox1.Items.Add("圆⾓矩形");
//comboBox1.Items.Add("Oval");
comboBox1.SelectedIndex = 1;
}
publicIColor ConvertColorToIColor(Color color)
{
IColor pColor = newRgbColorClass();
pColor.RGB = color.B * 65536+ color.G * 256 + color.R;
returnpColor;
}
privatevoid button2_Click(object sender, EventArgs e)
{
IBalloonCallout textBack =(((IFormattedTextSymbol)textSymbol).Background) asIBalloonCallout; IFillSymbol pOldFill =textBack.Symbol;
IPoint pPoint =textBack.AnchorPoint;
ISimpleFillSymbol pSmplFill =new SimpleFillSymbolClass();
pSmplFill.Style =esriSimpleFillStyle.esriSFSSolid;
if(ModifFillColor)
{
pSmplFill.Color =ConvertColorToIColor(this.button1.BackColor);
}
else
pSmplFill.Color =pOldFill.Color;
IBalloonCallout pBllnCallout= new BalloonCalloutClass();
switch(comboBox1.Text)
{
case"矩形框":
pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRectangle;
break;
case"圆⾓矩形":
pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSRoundedRectangle;
break;
//case"Oval":
// pBllnCallout.Style =esriBalloonCalloutStyle.esriBCSOval;
// break;
}
pBllnCallout.Symbol =pSmplFill;
pBllnCallout.LeaderTolerance= 5;
pBllnCallout.AnchorPoint =pPoint;
IFormattedTextSymbolpTextSymbol = new
1.打开arcgis,加入线数据。

2.开始编辑数据。

3.然后,点击创建要素工具。
答:// 在Mapcontrol的mouseDown中添加下列内容,来添加⽓泡注释功能:callout.privatevoid axMapControl1_OnMouseDown(object sender,IMapControlEvents2_OnMouseDownEvent e){ axMapControl1.CurrentTool = null;IPoint pPoint ;pPoint = new PointClass();pPoint.PutCoords(e.mapX, e.mapY);IF...
答:这个要自己设置的,右键文本框→属性→编辑属性→高级文本,然后勾选文本背景进行设置。
答:单击 X 字段(可选) 下拉箭头(如果想要提供 x 值),然后选择要绘成图表的字段。 X 标注字段可用于指定一个不同的字段来标注气泡图的水平轴。 默认情况下,输入数据的值将被添加到图表的图例中。可通过取消选中添加到图例复选框来禁用此设置。 要使用对应的值来标记数据点,请选中显示标注(注...
答:arcgis用箭头标注距离方式如下:1、打开arcgis,加入线数据。2、开始编辑数据。3、点击创建要素工具。4、点击模板中的线。5、打开数据下的线型,选择箭头,再点确定。ArcGIS是计算机制图应用,包含全球范围内底图地图数据、应用程序以及可配置应用模板和开发人员使用GIS工具和API,用于创建Web地图发布GIS服务,...
答:矢量图层改变颜色要右键点击所选图层的属性,在分类对话框中选择分类,就可以改变颜色了。shp文件自身不能保存颜色等样式,要想颜色等样式不变化,可以保存个MXD工程文件,或者把shp文件导入数据库中就编辑保存样式就可以了。先是重新安装GIS软件,尤其是注意清理注册表,很有可能是软件受损;如果还是不行,...
答:在ArcGIS中,Hydrant是Fire Hydrant要素类的子类,其定义的标注格式可以根据实际需要进行设置,以下是一些可能的标注格式示例:简单标注:可以将Hydrant要素的一个属性(例如ID号)作为标注文本,使用单一的字体、颜色和大小来显示标注文本。复合标注:可以将Hydrant要素的多个属性(例如ID号、位置、地名等)组合...
答:可以参考风向图的制作,里面有U,V矢量的制作,调整旋转方向跟大小就可以显示出上面箭头
答:有个叫drawing什么的绘图工具条,里面有你要的箭头及很多其它形状
答:点击编辑按钮。点击你期望改变方向的线。在草图的任何部位上右击并点击Flip。(草图方向被反转过来了,第一个节点变成了最后一个,并被标记为红色。)当完成了线的修改,右击草图的任何部分,并点击Finish Sketch。使用Edit工具双击要素,即可置为Modify Feature状态,并显示要素草图。编辑时,双击草图的最后...
答:没有编辑线要素。首先要先添加线要素,然后对其编辑,先要创建要素,然后选择模板的线,就不会有多出来的,如果不需要的可以删掉。也可以对分出的箭头进行标注,就能知道这个线代表着什么,也能够根据点的属性画出不同的方向的箭头,需要的也可以参照风向图的制作,矢量的制作,来调整旋转方向的大小。