VS2010-AE-----------------面状要素的符号化

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 { }
        }


    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值