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. Coursera Machine Learning: Regression 证书

  2. Gradle笔记系列(一)

    1.Gradle概述 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的 ...

  3. IP首部校验和计算

    根据RFC1071文档的计算方法,编写代码实现IP首部校验和的计算 计算步骤: 1.首先将IP首部中校验和字段置0 2.将IP首部每16bit进行相加,如果有进位产生,则将进位加到最低位. 3.将计算 ...

  4. Python中获取异常(Exception)信息

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序 ...

  5. 121. Best Time to Buy and Sell Stock (一) leetcode解题笔记

    121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of ...

  6. PHP测试用例文档

    PHP接口测试用例和文档 PHP在过程中的测试 采用写一个简单html表单做一个简单的post测试 PHP接口测试文档 Alpha部分主要的接口文档可查看 接口文档 功能模块 接口 登录注册模块 验证 ...

  7. [OSI]网络间通信流程

    PC 连接交换机A,组成内网.DNS Serv 和 Web Serv 连接交换机B 组成外网. 示意图: 内网通信 PC1 到 PC2: PC1 发送的数据先到交换机A,交换机A没有ARP地址缓存表, ...

  8. SDN三种模型解析

    数十年前,计算机科学家兼网络作家Andrew S. Tanenbaum讽刺标准过多难以选择,当然现在也是如此,比如软件定义网络模型的数量也很多.但是在考虑部署软件定义网络(SDN)或者试点之前,首先需 ...

  9. sql获取汉字的拼音首字母

    if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and xtype in (N'FN' ...

  10. Linux echo, sort, sed 等一些命令总结

    linux echo, sort, sed是初学linux shell script 的一些常用的命令.基本上来说,如果能够掌握了这些命令,我们就能写出一些不错的linux脚本.以下是我遇到的以下常用 ...