admin 管理员组

文章数量: 1184232

1、前言

GIS 系统的开发过程中, 地图符号化 其实是非常重要的一块内容。 ArcEngine 为我们提供了很多种符号样式,现在就来介绍一下 ArcEngine 中的点状符号。

2、常用的点符号

2.1、简单符号

3、实现代码

using System;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;using stdole;namespace Win
{publicpartialclass frmMain : Form
    {publicfrmMain(){InitializeComponent();
            axMapControl1.AddShapeFile(@"C:\Users\DSF\Desktop\data",@"point.shp");}/// <summary>/// 简单点符号/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidbtnSimpleMarkerSymbol_Click(object sender,EventArgs e){// 点符号颜色IRgbColor pMarkerSymbolColor =newRgbColor();
            pMarkerSymbolColor.Red =255;
            pMarkerSymbolColor.Green =0;
            pMarkerSymbolColor.Blue =0;// 轮廓线颜色IRgbColor pOutlineColor =newRgbColor();
            pOutlineColor.Red =0;
            pOutlineColor.Green =0;
            pOutlineColor.Blue =255;// 创建符号ISimpleMarkerSymbol pSimpleMarkerSymbol =newSimpleMarkerSymbol();
            pSimpleMarkerSymbol.Angle =30;
            pSimpleMarkerSymbol.Color = pMarkerSymbolColor;
            pSimpleMarkerSymbol.Size =15;
            pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSSquare;
            pSimpleMarkerSymbol.Outline =true;
            pSimpleMarkerSymbol.OutlineColor = pOutlineColor;
            pSimpleMarkerSymbol.OutlineSize =3;// 设置符号IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0)as IGeoFeatureLayer;IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pSimpleMarkerSymbol as ISymbol;// 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();}/// <summary>/// 箭头符号/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidbtnArrowMarkerSymbol_Click(object sender,EventArgs e){// 点符号颜色IRgbColor pRgbColor =newRgbColor();
            pRgbColor.Red =255;
            pRgbColor.Green =0;
            pRgbColor.Blue =0;// 创建符号IArrowMarkerSymbol pArrowMarkerSymbol =newArrowMarkerSymbol();
            pArrowMarkerSymbol.Angle =0;
            pArrowMarkerSymbol.Color = pRgbColor;
            pArrowMarkerSymbol.Length =20;
            pArrowMarkerSymbol.Size =30;
            pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
            pArrowMarkerSymbol.Width =20;// 设置符号IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0)as IGeoFeatureLayer;IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pArrowMarkerSymbol as ISymbol;// 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();}/// <summary>/// 叠加符号/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidbtnMultiLayerMarkerSymbol_Click(object sender,EventArgs e){// 创建简单符号颜色IRgbColor pSimpleMarkerSymbolColor =newRgbColor();
            pSimpleMarkerSymbolColor.Red =255;
            pSimpleMarkerSymbolColor.Green =0;
            pSimpleMarkerSymbolColor.Blue =0;// 创建箭头符号颜色IRgbColor pArrowMarkerSymbolColor =newRgbColor();
            pArrowMarkerSymbolColor.Red =0;
            pArrowMarkerSymbolColor.Green =255;
            pArrowMarkerSymbolColor.Blue =0;// 创建简单符号ISimpleMarkerSymbol pSimpleMarkerSymbol =newSimpleMarkerSymbol();
            pSimpleMarkerSymbol.Color = pSimpleMarkerSymbolColor;
            pSimpleMarkerSymbol.Size =30;
            pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCross;// 创建箭头符号IArrowMarkerSymbol pArrowMarkerSymbol =newArrowMarkerSymbol();
            pArrowMarkerSymbol.Color = pArrowMarkerSymbolColor;
            pArrowMarkerSymbol.Length =20;
            pArrowMarkerSymbol.Size =20;
            pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
            pArrowMarkerSymbol.Width =20;// 创建叠加符号IMultiLayerMarkerSymbol pMultiLayerMarkerSymbol =newMultiLayerMarkerSymbol();
            pMultiLayerMarkerSymbol.AddLayer(pSimpleMarkerSymbol);
            pMultiLayerMarkerSymbol.AddLayer(pArrowMarkerSymbol);// 设置符号IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0)as IGeoFeatureLayer;IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pMultiLayerMarkerSymbol as ISymbol;// 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();}/// <summary>/// 字符标记符号/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidbtnCharacterMarkerSymbol_Click(object sender,EventArgs e){// 点符号颜色IRgbColor pRgbColor =newRgbColor();
            pRgbColor.Red =255;
            pRgbColor.Green =0;
            pRgbColor.Blue =0;// 创建字体IFontDisp pFontDisp =newStdFont()as IFontDisp;
            pFontDisp.Name ="楷体";
            pFontDisp.Size =40;// 创建符号ICharacterMarkerSymbol pCharacterMarkerSymbol =newCharacterMarkerSymbol();
            pCharacterMarkerSymbol.Angle =0;
            pCharacterMarkerSymbol.CharacterIndex =10084;
            pCharacterMarkerSymbol.Color = pRgbColor;
            pCharacterMarkerSymbol.Font = pFontDisp;
            pCharacterMarkerSymbol.Size =40;// 设置符号IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0)as IGeoFeatureLayer;IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pCharacterMarkerSymbol as ISymbol;// 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();}/// <summary>/// 图片符号/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidbtnPictureMarkerSymbol_Click(object sender,EventArgs e){// 创建符号IPictureMarkerSymbol pPictureMarkerSymbol =newPictureMarkerSymbol();
            pPictureMarkerSymbol.Angle =0;
            pPictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPicturePNG,@"C:\Users\DSF\Desktop\Driving_Directions32.png");
            pPictureMarkerSymbol.Size =25;// 设置符号IGeoFeatureLayer pGeoFeatureLayer = axMapControl1.get_Layer(0)as IGeoFeatureLayer;IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;ISimpleRenderer pSimpleRenderer = pFeatureRenderer as ISimpleRenderer;
            pSimpleRenderer.Symbol = pPictureMarkerSymbol as ISymbol;// 刷新地图
            axMapControl1.Refresh();
            axTOCControl1.Update();}}}

本文标签: 符号 刷新地图 编程