ArcGIS Engine9.3为开发人员提供了32种符号,主要分为三大类符号MarkerSymbol(点符号)、 LineSymbol(线符号)和FillSymbol(填充符号)。此外还有两种特殊类型的符号:一种是TextSymbol用于文字标注;另一种是3D Chart符号,用于显示饼图等三维对象。
1.MarkerSymbol对象
MarkerSymbol用于修饰点对象的符号,它拥有十三个子类,其中不同的子类可以产生不同类型的点符号。所有的MarkerSymbol类都实现了IMarkerSymbol接口,这个接口定义了标记符号的公共方法和属性,如角度、颜色、大小和X,Y偏移量等。
点符号类型 | 描述 |
ArrowMarkerSymbol | 预定义的箭头符号 |
BarChartSymbol | 柱状图符号 |
CharacterMarker3DSymbol | 三维字体符号 |
CharacterMarkerSymbol | 字体符号 |
Marker3DSymbol | 3D 符号 |
MultiLayerMarkerSymbol | 多个符号叠加产生新点符号 |
PictureMarkerSymbol | 图片符号(bmp或emf) |
PiechartSymbol | 饼图符号 |
SimpleMarker3DSymbol | 简单3D符号 |
SimpleMarkerSymbol | 简单符号 |
StackedChartSymbol | 堆叠符号 |
TextMarkerSymbol | 文字符号用来符号化点 |
//创建SimpleMarkerSymbolClass对象
ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
//创建RgbColorClass对象为pSimpleMarkerSymbol设置颜色
IRgbColor pRgbColor = new RgbColorClass();
pRgbColor.Red = 255;
pSimpleMarkerSymbol.Color = pRgbColor as IColor;
//设置pSimpleMarkerSymbol对象的符号类型,选择钻石
pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSDiamond;
//设置pSimpleMarkerSymbol对象大小,设置为5
pSimpleMarkerSymbol.Size = 5;
//显示外框线
pSimpleMarkerSymbol.Outline = true;
//为外框线设置颜色
IRgbColor pLineRgbColor = new RgbColorClass();
pLineRgbColor.Green = 255;
pSimpleMarkerSymbol.OutlineColor = pLineRgbColor as IColor;
//设置外框线的宽度
pSimpleMarkerSymbol.OutlineSize = 1;
2.LineSymbol对象
LineSymbol对象是用于修饰线型几何对象的符号,它拥有八个子类,其中不同的子类可以产生不同类型的线符号,所有的LineSymbol类都实现了ILineSymbol接口, ILineSymbol定义了两个公共属性:Color和Width。
线符号类型 | 描述 |
CartographicLineSymbol | 实心或者虚线线符号 |
HashLineSymbol | 离散线符号 |
MarkerLineSymbol | 点线符号 |
MultiLayerLineSymbol | 多符号叠加产生新线符号 |
PictureLineSymbol | 图片线符号 |
SimpleLine3DSymbol | 3D 线符号 |
SimpleLineSymbol | 预定义风格的线符号 |
TextureLineSymbol (3DAnalyst) | 纹理贴 图线符号 |
IRgbColor pRgbColor = new RgbColorClass();
pRgbColor.Red = 255;
pArrowMarker.Color = pRgbColor as IColor;
pArrowMarker.Length = 10;
pArrowMarker.Width = 8;
pArrowMarker.Style = esriArrowMarkerStyle.esriAMSPlain;
IMarkerLineSymbol pMarkerLine = new MarkerLineSymbolClass();
pMarkerLine.MarkerSymbol = arrowMarker;
IRgbColor pLineColor = new RgbColorClass();
pLineColor.Blue = 255;
pMarkerLine.Color = pLineColor as IColor;
3.FillSymbol对象
FillSymbol是用来修饰如多边形等具有面积的几何形体的符号对象,它拥有十一个子类如表4所示它实现了IFillSymbol,这个接口定义了两个属性Color和OutLine,以满足所有类型的FillSymbol对象的公共属性设置。
填充符号类型 | 描述 |
ColorRampSymbol (Carto) | 用于渲染Raster数据的颜色带 |
ColorSymbol (Carto) | 用于渲染Raster数据的颜色符号 |
DotDensityFillSymbol | 点密度填充符号 |
GradientFillSymbol | 渐变填充符号 |
LineFillSymbol | 包含线符号的填充符号 |
MarkerFillSymbol | 包含点符号的填充符号 |
MultiLayerFillSymbol | 多符号叠加产生新填充符号 |
PictureFillSymbol | 图片填充符号 |
RasterRGBSymbol | 用于渲染Raster数据 RGBSymbol |
SimpleFillSymbol | 简单填充符号 |
TextureFillSymbol | 纹理贴图填充符号 |
IColor pLineColor = new RgbColorClass();
ICartographicLineSymbol pCartoLineSymbol = new CartographicLineSymbolClass();
pCartoLineSymbol.Width = 2;
pCartoLineSymbol.Color = pLineColor;
//创建一个填充符号
ISimpleFillSymbol pSmplFillSymbol = new SimpleFillSymbol();
//设置填充符号的属性
IColor pRgbClr = new RgbColorClass();
IFillSymbol pFillSymbol = pSmplFillSymbol;
pFillSymbol.Color = pRgbClr;
pFillSymbol.Outline = pCartoLineSymbol;
4.TextSymbol对象
TextSymbol对象是用于修饰文字元素的,文字元素在要素标注等方面很有用处。TextSymbol符号最重要的设置对象是它的字符,它实现了三个主要的接口来设置字符:ITextSymbol 、 ISimpleTextSymbol 和 IFormattedTextSymbol 。
ITextSymbol接口是定义文本字符样式的主要接口,它定义的ITextSymbol::Font属性是产生一个TextSymbol符号的关键。可以使用IFontDisp接口来设置字体的大小和是否是粗体、倾斜等属性。使用ITextSymbol接口还可以定义TextSymbol对象的颜色、角度、水平排列方式、垂直排列方式和文本等内容。
以下是一个构建TextSymbol的函数:
///
///生成文本符号
///
///文本符号
///字体名称
///字体大小
///字体颜色
public static void MakeTextSymbol(ref ITextSymbol pTxtSymbol, string sFontName, int iFont, int iColor)
{try
{
pTxtSymbol.Font.Name = sFontName;
pTxtSymbol.Font.Size = (decimal)iFont;
IRgbColor pRGBColor = new RgbColorClass();
pRGBColor.RGB = iColor;
pTxtSymbol.Color = (IColor)pRGBColor;
pTxtSymbol.Angle = 0;
pTxtSymbol.RightToLeft = false;
pTxtSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;
pTxtSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}