Arcgie Engine 的符號,主要分爲三大類符號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) | 紋理貼 圖線符號 |
IArrowMarkerSymbol pArrowMarker = new ArrowMarkerSymbolClass();
RgbColor
pRgbColor =
new
RgbColorClass();
pRgbColor.Red = 255;
pArrowMarker.Color = pRgbColorasIColor;
pArrowMarker.Length = 10;
pArrowMarker.Width = 8;
pArrowMarker.Style = esriArrowMarkerStyle.esriAMSPlain;
IMarkerLineSymbolpMarkerLine =
newMarkerLineSymbolClass();
pMarkerLine.MarkerSymbol = arrowMarker;
IRgbColorpLineColor =
newRgbColorClass();
pLineColor.Blue = 255;
pMarkerLine.Color = pLineColorasIColor;
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 | 紋理貼圖填充符號 |
以MarkerLineSymbol構建爲例演示如何創建一個線符號:
//爲填充符號創建外框線符號
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對象的顏色、角度、水平排列方式、垂直排列方式和文本等內容。
4.TextSymbol對象
TextSymbol對象是用於修飾文字元素的,文字元素在要素標註等方面很有用處。TextSymbol符號最重要的設置對象是它的字符,它實現了三個主要的接口來設置字符:ITextSymbol 、 ISimpleTextSymbol 和 IFormattedTextSymbol 。
ITextSymbol接口是定義文本字符樣式的主要接口,它定義的ITextSymbol::Font屬性是產生一個TextSymbol符號的關鍵。可以使用IFontDisp接口來設置字體的大小和是否是粗體、傾斜等屬性。使用ITextSymbol接口還可以定義TextSymbol對象的顏色、角度、水平排列方式、垂直排列方式和文本等內容。4.TextSymbol對象
TextSymbol對象是用於修飾文字元素的,文字元素在要素標註等方面很有用處。TextSymbol符號最重要的設置對象是它的字符,它實現了三個主要的接口來設置字符:ITextSymbol 、 ISimpleTextSymbol 和 IFormattedTextSymbol 。
ITextSymbol接口是定義文本字符樣式的主要接口,它定義的ITextSymbol::Font屬性是產生一個TextSymbol符號的關鍵。可以使用IFontDisp接口來設置字體的大小和是否是粗體、傾斜等屬性。使用ITextSymbol接口還可以定義TextSymbol對象的顏色、角度、水平排列方式、垂直排列方式和文本等內容。4.TextSymbol對象
TextSymbol對象是用於修飾文字元素的,文字元素在要素標註等方面很有用處。TextSymbol符號最重要的設置對象是它的字符,它實現了三個主要的接口來設置字符:ITextSymbol 、 ISimpleTextSymbol 和 IFormattedTextSymbol 。
ITextSymbol接口是定義文本字符樣式的主要接口,它定義的ITextSymbol::Font屬性是產生一個TextSymbol符號的關鍵。可以使用IFontDisp接口來設置字體的大小和是否是粗體、傾斜等屬性。使用ITextSymbol接口還可以定義TextSymbol對象的顏色、角度、水平排列方式、垂直排列方式和文本等內容。
4.TextSymbol對象
TextSymbol對象是用於修飾文字元素的,文字元素在要素標註等方面很有用處。TextSymbol符號最重要的設置對象是它的字符,它實現了三個主要的接口來設置字符:ITextSymbol 、 ISimpleTextSymbol 和 IFormattedTextSymbol 。
ITextSymbol接口是定義文本字符樣式的主要接口,它定義的ITextSymbol::Font屬性是產生一個TextSymbol符號的關鍵。可以使用IFontDisp接口來設置字體的大小和是否是粗體、傾斜等屬性。使用ITextSymbol接口還可以定義TextSymbol對象的顏色、角度、水平排列方式、垂直排列方式和文本等內容。
以下是一個構建TextSymbol的函數:
///<summary>
///生成文本符號
///</summary>
///<param name="pTxtSymbol">文本符號</param>
///<param name="sFontName">字體名稱</param>
///<param name="iFont">字體大小</param>
///<param name="iColor">字體顏色</param>
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);
}
}
5. 3DChartSymbol對象
3DChartSymbol是一個抽象類,它擁有三個子類:BarChart、PieChart和StackedChart。BarChartSymbol是最常用的三維着色符號,它使用不同類型的柱子來代表一個要素類中不同的屬性,而柱子的高度取決於屬性值的大小。
PieChartSymbol符號進行着色的方法是使用一個餅圖來顯示不同要素類中的不同屬性,不同的屬性按照它們的數值大小佔有一個餅圖中的不同比例的扇形區域。
PieChartSymbol符號進行着色的方法是使用一個餅圖來顯示不同要素類中的不同屬性,不同的屬性按照它們的數值大小佔有一個餅圖中的不同比例的扇形區域。