using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
//using TextSymbols;
using ESRI.ArcGIS.Controls;
//using 符号化.Annotation;
//using 符号化.Class;
//using 符号化;
using ESRI.ArcGIS.Animation;
using ESRI.ArcGIS.esriSystem;
//using 符号选择器;
using stdole;
using ESRI.ArcGIS.SystemUI;
using _5_2地图符号化.Class;
namespace _5_2地图符号化
{
public partial class Form1 : Form
{
private OperateMap m_OperateMap = null;
public string filepath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
public Form1()
{
InitializeComponent();
m_OperateMap = new OperateMap();
}
private void 文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
ICommand Cmd = new ControlsOpenDocCommandClass();
Cmd.OnCreate(mainMapControl1.Object);
Cmd.OnClick();
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveMap(mainMapControl1.DocumentFilename, mainMapControl1.Map);
}
private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
{
ICommand Cmd = new ControlsSaveAsDocCommandClass();
Cmd.OnCreate(mainMapControl1.Object);
Cmd.OnClick();
}
public void SaveMap(string m_FilePath, IMap m_SaveMap)
{
try
{
IMapDocument pMapDoc = new MapDocumentClass();
IMxdContents pMxdC = m_SaveMap as IMxdContents;
pMapDoc.New(m_FilePath);
pMapDoc.ReplaceContents(pMxdC);
if (pMapDoc.get_IsReadOnly(pMapDoc.DocumentFilename) == true)
{
MessageBox.Show("本地图文档是只读的,不能保存!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
pMapDoc.Save(pMapDoc.UsesRelativePaths, true);
}
catch (Exception ex)
{
}
}
private void SimpleMaker_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl1.get_Layer(0);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置点符号
ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol();
pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSSquare;//设置点符号样式为方形
IRgbColor pRgbColor = new RgbColor();
pRgbColor = GetRgbColor(225, 100, 100);
pMarkerSymbol.Color = pRgbColor;//设置点符号颜色
ISymbol pSymbol = (ISymbol)pMarkerSymbol;
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pSymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl1.Refresh();
mainTOCControl1.Update();
}
catch
{
MessageBox.Show("请输入有效图层!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void ArrowMarker_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl1.get_Layer(0);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置点符号
IArrowMarkerSymbol pArrowMarkerSymbol = new ArrowMarkerSymbolClass();
IRgbColor pRgbColor = new RgbColor();
pRgbColor = GetRgbColor(255, 100, 0);
pArrowMarkerSymbol.Angle = 90;
pArrowMarkerSymbol.Color = pRgbColor;
pArrowMarkerSymbol.Length = 20;//设置简单顶点到底边的距离
pArrowMarkerSymbol.Width = 10;//设置箭头底边宽度
pArrowMarkerSymbol.XOffset = 0;
pArrowMarkerSymbol.YOffset = 0;
pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;//设置点符号样式
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pArrowMarkerSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl1.Refresh();
mainTOCControl1.Update();
}
catch
{
MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void CharacterMarker_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl1.get_Layer(0);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置点符号
ICharacterMarkerSymbol pCharacterMarkerSymbol = new CharacterMarkerSymbol();
stdole.IFontDisp pFontDisp = (stdole.IFontDisp)(new stdole.StdFontClass());
IRgbColor pRgbColor = new RgbColor();
pRgbColor = GetRgbColor(255, 0, 0);
pFontDisp.Name = "arial";//设置字体样式
pFontDisp.Italic = true;//设置是否采用斜体字符
pCharacterMarkerSymbol.Angle = 0;
pCharacterMarkerSymbol.CharacterIndex = 65;
pCharacterMarkerSymbol.Color = pRgbColor;
pCharacterMarkerSymbol.Font = pFontDisp;
pCharacterMarkerSymbol.Size = 10;
pCharacterMarkerSymbol.XOffset = 3;
pCharacterMarkerSymbol.YOffset = 3;
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pCharacterMarkerSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl1.Refresh();
mainTOCControl1.Update();
}
catch
{
MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void PictureMarker_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl1.get_Layer(0);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置点符号
IPictureMarkerSymbol pPictureMarkerSymbol = new PictureMarkerSymbolClass();
string fileName = m_OperateMap.getPath(filepath) + "\\data\\Symbol\\city.bmp";
pPictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);//图片类型和图片来源
pPictureMarkerSymbol.Angle = 0;
pPictureMarkerSymbol.Size = 10;
pPictureMarkerSymbol.XOffset = 0;
pPictureMarkerSymbol.YOffset = 0;
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pPictureMarkerSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl1.Refresh();
mainTOCControl1.Update();
}
catch
{
MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
public IRgbColor GetRgbColor(int intR, int intG, int intB)
{
IRgbColor pRgbColor = null;
if (intR < 0 || intR > 255 || intG < 0 || intG > 255 || intB < 0 || intB > 255)
{
return pRgbColor;
}
pRgbColor = new RgbColorClass();
pRgbColor.Red = intR;
pRgbColor.Green = intG;
pRgbColor.Blue = intB;
return pRgbColor;
}
private void MultiLayerMarker_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl1.get_Layer(0);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置点符号
IMultiLayerMarkerSymbol pMultiLayerMarkerSymbol = new MultiLayerMarkerSymbolClass();
IPictureMarkerSymbol pPictureMarkerSymbol = new PictureMarkerSymbolClass();
ICharacterMarkerSymbol pCharacterMarkerSymbol = new CharacterMarkerSymbol();
stdole.IFontDisp fontDisp = (stdole.IFontDisp)(new stdole.StdFontClass());
IRgbColor pGgbColor = new RgbColor();
pGgbColor = GetRgbColor(0, 0, 0);
fontDisp.Name = "arial";
fontDisp.Size = 12;
fontDisp.Italic = true;
//创建字符符号
pCharacterMarkerSymbol.Angle = 0;
pCharacterMarkerSymbol.CharacterIndex = 97;//字母a
pCharacterMarkerSymbol.Color = pGgbColor;
pCharacterMarkerSymbol.Font = fontDisp;
pCharacterMarkerSymbol.Size = 24;
//创建图片符号
string fileName = m_OperateMap.getPath(filepath) + "\\data\\Symbol\\city.bmp"; ;
pPictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);
pPictureMarkerSymbol.Angle = 0;
pPictureMarkerSymbol.BitmapTransparencyColor = pGgbColor;
pPictureMarkerSymbol.Size = 10;
//添加图片、字符符号到组合符号中
pMultiLayerMarkerSymbol.AddLayer(pCharacterMarkerSymbol);
pMultiLayerMarkerSymbol.AddLayer(pPictureMarkerSymbol);
pMultiLayerMarkerSymbol.Angle = 0;
pMultiLayerMarkerSymbol.Size = 20;
pMultiLayerMarkerSymbol.XOffset = 5;
pMultiLayerMarkerSymbol.YOffset = 5;
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pMultiLayerMarkerSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl1.Refresh();
mainTOCControl1.Update();
}
catch
{
MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
VS2010 ARCGIS ENGINE10.2 -------------点状要素符号化
最新推荐文章于 2024-03-18 10:33:08 发布