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. 05-Java中的String类

    程序设计思路: 首先目标是使输入的字符串加上某个数变成另一个字符串,从而相当于对字符串进行加密. 第一步输入一个字符串String类型: 第二步把这个字符串转变成字符数组: 第三步让这个数组的每一个字 ...

  2. Access批量操作

    鉴于C#要插5万条记录到Access很慢,在网上找了好久的资料,终于找到了比较有用的信息(转载自Bach)谢谢! 总结如下: 1.导出TXT:  select * into [data.txt] in ...

  3. Centos7.0安装配置PHP7.0

    YUM安装所需开发包 yum install wget make gcc gcc-c++ bison autoconf patch \ pcre-devel zlib-devel openssl-de ...

  4. hdu 1069 (DP) Monkey and Banana

    题目:这里 题意: Description 一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块 ...

  5. sql 通过表名获取所有列名

    因为要做数据迁移,也就是业务数据库的数据要迁移到历史数据库,这两个数据库理论上表结构是一样的,但因为时间原因,可能业务库升级了表结构,但历史库没有升级,且加字段的顺序不一样,导致 insert int ...

  6. 写单独页面的一些通用css样式,做了一点点兼容

    /*全局变量*/*{margin:0;padding:0;}body{font-size:14px;font-family:"microsoft yahei";overflow:v ...

  7. 数据库SQL

    mySQL的安装和简单的命令 show -uroot -p 进入mySQL show databases 查看所有库 show tables 查看所有表 use 表名 进入表 create datab ...

  8. C++的隐式类型转换

    C++是一种复杂的语言,其中有许多“好玩”的特性,学习C++的过程就像在海边捡一颗颗石头,只要坚持不懈,也许一颗颗小石头也能建起你自己小小的城堡. 废话完后,讲讲自己捡到的石头:隐式类型转换 学习出处 ...

  9. Fuzzy Probability Theory---(3)Discrete Random Variables

    We start with the fuzzy binomial. Then we discuss the fuzzy Poisson probability mass function. Fuzzy ...

  10. PHP测试用例文档

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