1,利用combobox创建色带,首先draw

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
         Rectangle rec=   e.Bounds;
         rec.Width = rec.Width /array.Length;
        string fromColor = comboBox1.Items[e.Index].ToString().Split('|')[0];
         string ToColor = comboBox1.Items[e.Index].ToString().Split('|')[1];
         _FromColor = Color.FromName(fromColor);
         _ToColor = Color.FromName(ToColor);
         IAlgorithmicColorRamp ramp = new AlgorithmicColorRampClass();//创建色带,也可以创建渐变色带用LinearGradientBrush类
         ramp.FromColor = ColorToIColor(_FromColor);
         ramp.ToColor = ColorToIColor(_ToColor);
         ramp.Size =array.Length ;
         bool ok=true;
            ramp.CreateRamp(out ok);
            IEnumColors EnumColor = ramp.Colors;
      IColor color = null;
       SolidBrush sb=null;

for (int i = 0; i < array.Length; i++)
         {
             color = EnumColor.Next();
             sb=new SolidBrush(IColorToColor(color));
             e.Graphics.FillRectangle(sb, rec);    
             rec.Offset(rec.Width, 0);//对小矩形进行偏移
         }

}

2.在Load中

comboBox1.DrawMode = DrawMode.OwnerDrawFixed;  //使draw_Item有效
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox1.Items.Clear();
            comboBox1.BeginUpdate();
            foreach (string oneColor in colorList)
            {
                comboBox1.Items.Add(oneColor);
            }

comboBox1.EndUpdate();

3、定义颜色,色带的起始与终止色彩

private static string[] colorList = { "Black|White", "White|Black", "Red|Blue","Green|Black" };

4、根据获取的字段值,对每一个值进行渲染

首先获取字段值(不重复)

private double[] array;
        private void button1_Click(object sender, EventArgs e)
        {
            string layername = comboBox2.SelectedItem.ToString();
            string fieldname = comboBox3.SelectedItem.ToString();
            SelectLayer sl = new SelectLayer(mapControl);
          IFeatureLayer layer=  sl.GetLayerByName(layername) as IFeatureLayer;

ITableHistogram histogram = new BasicTableHistogramClass();
          histogram.Field = fieldname;
          histogram.Table = layer as ITable;
          IBasicHistogram BasicH = histogram as IBasicHistogram;

object value=null;
            object frequece=null;
            BasicH.GetHistogram(out value, out frequece);
             array = value as double[];
            for (int i = 0; i < array.Length; i++)
            {
                listView1.Items.Add(array[i].ToString());
            }

}

最后进行渲染:

private void button2_Click(object sender, EventArgs e)
        {

SelectLayer sl = new SelectLayer(mapControl);
            IGeoFeatureLayer layer = sl.GetLayerByName(comboBox2.SelectedItem.ToString()) as IGeoFeatureLayer;
            string fieldname = comboBox3.SelectedItem.ToString();
            string item = comboBox1.SelectedItem.ToString();
            string beginColor = item.Split('|')[0];
            string finishColor = item.Split('|')[1];
            Color _beginColor = Color.FromName(beginColor);
            Color _finishColor = Color.FromName(finishColor);
            IAlgorithmicColorRamp ramp = new AlgorithmicColorRampClass();
            ramp.FromColor = ColorToIColor(_beginColor);
            ramp.ToColor = ColorToIColor(_finishColor);
            ramp.Size = array.Length;
            bool ok = true;
            ramp.CreateRamp(out ok);
            IEnumColors enumColor = ramp.Colors;
            IColor color = null;
            ISimpleFillSymbol fillSymbol = null;
            IUniqueValueRenderer valueRender = new UniqueValueRendererClass();
            valueRender.FieldCount = 1;
            valueRender.set_Field(0, fieldname);
            for (int i = 0; i < array.Length; i++)
            {
                color = enumColor.Next();
                fillSymbol = new SimpleFillSymbolClass();
                fillSymbol.Color = color;
                valueRender.AddValue(array[i].ToString(), fieldname, fillSymbol as ISymbol);
               
            }
           
            MessageBox.Show("成功!");
            layer.Renderer = valueRender as IFeatureRenderer;
            mapControl.Refresh();
        }

最后渲染结果如上图。可能方法比较笨拙,代码重复较多,只是限于水平有限,并是自己所想出来的结果,所以和各位Giser一起分享。

Arcengine 中,创建色带的更多相关文章

  1. ArcEngine中打开各种数据源(WorkSpace)的连接

    (SDE.personal/File.ShapeFile.CAD数据.影像图.影像数据集) ArcEngine 可以接受多种数据源.在开发过程中我们使用了如下几种数据源 1.企业数据库(SDE) 企业 ...

  2. Arcengine实现创建网络数据集札记(三)

    后记 下面给出项目中用到的自定义的封装类. AE许可初始化封装类: public class AELicenseChecker { private static volatile AELicenseC ...

  3. Arcengine实现创建网络数据集札记(二)

    四 ArcEngine实现创建网络数据集 ArcEngine创建网络数据集的过程,与ArcMap设置的过程类似,主要通过六个步骤即可以实现. 1 定义网络数据集对象,并设置基本属性,包括网络数据集名称 ...

  4. Arcengine实现创建网络数据集札记(一)

    一 引子 网络数据集,GIS空间分析基础的理论和知识,是最短路径分析.连通性分析等其他空间分析技术的数据基础. 以往,网络数据集的研究很少,此次项目开发过程中,对网络数据集以及arcengine创建网 ...

  5. ArcEngine中打开各种数据源(WorkSpace)的连接(转)

    ArcEngine中打开各种数据源(WorkSpace)的连接 (SDE.personal/File.ShapeFile.CAD数据.影像图.影像数据集) ArcEngine 可以接受多种数据源.在开 ...

  6. ArcEngine中打开各种数据源(WorkSpace)的连接http://www.cnblogs.com/feilong3540717/archive/2011/08/07/2129906.html

    ArcEngine中打开各种数据源(WorkSpace)的连接 ArcEngine中打开各种数据源(WorkSpace)的连接 (SDE.personal/File.ShapeFile.CAD数据.影 ...

  7. [转] ArcEngine中打开各种数据源(WorkSpace)的连接

    原文 ArcEngine中打开各种数据源(WorkSpace)的连接(SDE.personal/File.ShapeFile.CAD数据.影像图.影像数据集) ArcEngine 可以接受多种数据源. ...

  8. ArcEngine中多边形内外环的处理(转)

    ArcEngine中多边形内外环的处理 原创 2012年09月06日 22:49:11 标签: object / null / 数据库 3462 Polylgon对象是由一个或多个Ring对象的有序集 ...

  9. ArcEngine中最短路径的实现

    原文 ArcEngine中最短路径的实现 最短路径分析属于ArcGIS的网络分析范畴.而ArcGIS的网络分析分为两类,分别是基于几何网络和网络数据集的网络分析.它们都可以实现最短路径功能.下面先介绍 ...

随机推荐

  1. Centos 压缩、解压和打包命令

    gzip命令 --功能说明:gz文件的压缩和解压缩. --命令格式:gzip [参数] <文件> --常用参数: -d 解开压缩文件 -l 列出压缩文件的相关信息 -q 不显示警告信息 - ...

  2. 转js中this指向的简明解答

    JS中的this对象详解   JS中this关键字很常见,但是它似乎变幻莫测,让人抓狂.这篇文章就来揭示其中的奥秘. 借助阮一峰老师的话:它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用. ...

  3. MySQL的简单查询语句

    查询: 一:查询所有数据 select * from Info 查所有数据 select Code,Name from Info 查特定列 二:根据条件查 select * from Info whe ...

  4. Xcode7以后 使用空模板

    Xcode7以后的版本没有空模板可以选择 习惯使用空模版的 可以自己拷贝空模版文件夹 放到模版的位置 重启就可以使用了 1:首先 需要有一个空模版 没有空模板的可以在下面路径下下载一个 并解压 htt ...

  5. 关于String中+与StringBuilder的问题

      字符串连接可以通过两种方法实现,其中一种是在Java中提供的一个StringBuilder类(这个类只在J2SE5及以上版本提供,以前的版本使用StringBuffer类). 字符串是Java程序 ...

  6. Tomcat的优化

    Tomcat的优化配置 修改tomcat的config目录下server.xml文件 <Connector port="9021"  protocol="HTTP/ ...

  7. JS 跨源请求

    一个 URL 大概包含的部分:scheme://host:port/path?#hash 比如一个 URL 为 http://www.xxx.com:8888/school/student.html, ...

  8. <转>C++11标准后的C++阅读书目

    C++11标准后的C++阅读书目 C++ 新标准 C++11 的发布导致了大批新书的出现,还有一些经典书籍也进行了更新.Andrew Binstock 在 Dr.dobbs 上给大家推介一些学习 C+ ...

  9. Tomcat部署遇到的问题

    项目服务端:Tomcat6.0.41 选用数据库:Mysql5.6.17 JDK环境:1.6.37 运行系统:Windows server 2008(64bit) ================== ...

  10. DOM基础

    DOM(Document Object Model)即文档对象模型,针对HTML 和XML 文档的API(应用程序接口).DOM 描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分. ...