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_4面状要素的符号化.Class;
namespace _5_4面状要素的符号化
{
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();
}
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 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
ICommand Cmd = new ControlsOpenDocCommandClass();
Cmd.OnCreate(mainMapControl.Object);
Cmd.OnClick();
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveMap(mainMapControl.DocumentFilename, mainMapControl.Map);
}
private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
{
ICommand Cmd = new ControlsSaveAsDocCommandClass();
Cmd.OnCreate(mainMapControl.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 简单填充符号ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl.get_Layer(2);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置面填充符号
ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();
pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSVertical;//设置面填充为垂直线填充
pSimpleFillSymbol.Color = GetRgbColor(150, 150, 150);
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pSimpleFillSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl.Refresh();
mainTOCControl.Update();
}
catch { }
}
private void LineFill_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl.get_Layer(2);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置面填充符号
ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();
pSimpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot; //定义线的样式
pSimpleLineSymbol.Width = 2;//定义线的宽度
IRgbColor pRgbColor = GetRgbColor(255, 0, 0);
pSimpleLineSymbol.Color = pRgbColor;//定义线的颜色
ILineFillSymbol pLineFillSymbol = new LineFillSymbol();
pLineFillSymbol.Angle = 45;
pLineFillSymbol.Separation = 10;
pLineFillSymbol.Offset = 5;
pLineFillSymbol.LineSymbol = pSimpleLineSymbol;
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pLineFillSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl.Refresh();
mainTOCControl.Update();
}
catch { }
}
private void MarkerFill_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl.get_Layer(2);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置面填充符号
IArrowMarkerSymbol pArrowMarkerSymbol = new ArrowMarkerSymbolClass();//设置填充点点符号样式
IRgbColor pRgbColor = GetRgbColor(255, 0, 0);
pArrowMarkerSymbol.Color = pRgbColor as IColor;
pArrowMarkerSymbol.Length = 2;
pArrowMarkerSymbol.Width = 2;
pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;
IMarkerFillSymbol pMarkerFillSymbol = new MarkerFillSymbolClass();
pMarkerFillSymbol.MarkerSymbol = pArrowMarkerSymbol;
pRgbColor = GetRgbColor(255, 0, 0);
pMarkerFillSymbol.Color = pRgbColor;
pMarkerFillSymbol.Style = esriMarkerFillStyle.esriMFSGrid;
IFillProperties pFillProperties = pMarkerFillSymbol as IFillProperties;
pFillProperties.XOffset = 2;
pFillProperties.YOffset = 2;
pFillProperties.XSeparation = 5;
pFillProperties.YSeparation = 5;
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pFillProperties as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl.Refresh();
mainTOCControl.Update();
}
catch { }
}
private void GradientFill_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl.get_Layer(2);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置面填充符号
IGradientFillSymbol pGradientFillSymbol = new GradientFillSymbolClass();
IAlgorithmicColorRamp pAlgorithcColorRamp = new AlgorithmicColorRampClass();//设置颜色带
pAlgorithcColorRamp.FromColor = GetRgbColor(255, 0, 0);//颜色带的起始颜色
pAlgorithcColorRamp.ToColor = GetRgbColor(0, 255, 0);//颜色带的终点颜色
pAlgorithcColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;
pGradientFillSymbol.ColorRamp = pAlgorithcColorRamp;//填充颜色带
pGradientFillSymbol.GradientAngle = 90;//设置填充方向
pGradientFillSymbol.GradientPercentage = 1;//控制色彩饱和度
pGradientFillSymbol.IntervalCount = 5;//设置填充颜色带的数目
pGradientFillSymbol.Style = esriGradientFillStyle.esriGFSLinear;//设置颜色填充带样式为线性填充
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pGradientFillSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl.Refresh();
mainTOCControl.Update();
}
catch { }
}
private void PictureFill_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl.get_Layer(2);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置面填充符号
IPictureFillSymbol pictureFillSymbol = new PictureFillSymbolClass();
string fileName = m_OperateMap.getPath(filepath) + "\\data\\Symbol\\states.bmp";
pictureFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);
ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
simpleLineSymbol.Color = GetRgbColor(255, 0, 0);
ISymbol symbol = pictureFillSymbol as ISymbol;
pictureFillSymbol.Outline = simpleLineSymbol;//设置面要素边线颜色
pictureFillSymbol.Angle = 0;//设置图片显示方向
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pictureFillSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl.Refresh();
mainTOCControl.Update();
}
catch { }
}
private void MultiLayerFill_Click(object sender, EventArgs e)
{
try
{
//获取目标图层
ILayer pLayer = new FeatureLayerClass();
pLayer = mainMapControl.get_Layer(2);
IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;
//设置渐变色填充面符号
IMultiLayerFillSymbol pMultiLayerFillSymbol = new MultiLayerFillSymbolClass();
IGradientFillSymbol pGradientFillSymbol = new GradientFillSymbolClass();
IAlgorithmicColorRamp pAlgorithcColorRamp = new AlgorithmicColorRampClass();
pAlgorithcColorRamp.FromColor = GetRgbColor(255, 0, 0);
pAlgorithcColorRamp.ToColor = GetRgbColor(0, 255, 0);
pAlgorithcColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;
pGradientFillSymbol.ColorRamp = pAlgorithcColorRamp;
pGradientFillSymbol.GradientAngle = 45;
pGradientFillSymbol.GradientPercentage = 0.9;
pGradientFillSymbol.Style = esriGradientFillStyle.esriGFSLinear;
//设置线填充面符号
ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();
pSimpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
pSimpleLineSymbol.Width = 2;
IRgbColor pRgbColor = GetRgbColor(255, 0, 0);
pSimpleLineSymbol.Color = pRgbColor;
ILineFillSymbol pLineFillSymbol = new LineFillSymbol();
pLineFillSymbol.Angle = 45;
pLineFillSymbol.Separation = 10;
pLineFillSymbol.Offset = 5;
pLineFillSymbol.LineSymbol = pSimpleLineSymbol;
//组合填充符号
pMultiLayerFillSymbol.AddLayer(pGradientFillSymbol);
pMultiLayerFillSymbol.AddLayer(pLineFillSymbol);
//更改符号样式
ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();
pSimpleRenderer.Symbol = pMultiLayerFillSymbol as ISymbol;
pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;
mainMapControl.Refresh();
mainTOCControl.Update();
}
catch { }
}
}
}
VS2010-AE-----------------面状要素的符号化
最新推荐文章于 2024-06-25 10:11:52 发布