Arcengine 中,创建色带


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 中,创建色带的更多相关文章
- ArcEngine中打开各种数据源(WorkSpace)的连接
(SDE.personal/File.ShapeFile.CAD数据.影像图.影像数据集) ArcEngine 可以接受多种数据源.在开发过程中我们使用了如下几种数据源 1.企业数据库(SDE) 企业 ...
- Arcengine实现创建网络数据集札记(三)
后记 下面给出项目中用到的自定义的封装类. AE许可初始化封装类: public class AELicenseChecker { private static volatile AELicenseC ...
- Arcengine实现创建网络数据集札记(二)
四 ArcEngine实现创建网络数据集 ArcEngine创建网络数据集的过程,与ArcMap设置的过程类似,主要通过六个步骤即可以实现. 1 定义网络数据集对象,并设置基本属性,包括网络数据集名称 ...
- Arcengine实现创建网络数据集札记(一)
一 引子 网络数据集,GIS空间分析基础的理论和知识,是最短路径分析.连通性分析等其他空间分析技术的数据基础. 以往,网络数据集的研究很少,此次项目开发过程中,对网络数据集以及arcengine创建网 ...
- ArcEngine中打开各种数据源(WorkSpace)的连接(转)
ArcEngine中打开各种数据源(WorkSpace)的连接 (SDE.personal/File.ShapeFile.CAD数据.影像图.影像数据集) ArcEngine 可以接受多种数据源.在开 ...
- ArcEngine中打开各种数据源(WorkSpace)的连接http://www.cnblogs.com/feilong3540717/archive/2011/08/07/2129906.html
ArcEngine中打开各种数据源(WorkSpace)的连接 ArcEngine中打开各种数据源(WorkSpace)的连接 (SDE.personal/File.ShapeFile.CAD数据.影 ...
- [转] ArcEngine中打开各种数据源(WorkSpace)的连接
原文 ArcEngine中打开各种数据源(WorkSpace)的连接(SDE.personal/File.ShapeFile.CAD数据.影像图.影像数据集) ArcEngine 可以接受多种数据源. ...
- ArcEngine中多边形内外环的处理(转)
ArcEngine中多边形内外环的处理 原创 2012年09月06日 22:49:11 标签: object / null / 数据库 3462 Polylgon对象是由一个或多个Ring对象的有序集 ...
- ArcEngine中最短路径的实现
原文 ArcEngine中最短路径的实现 最短路径分析属于ArcGIS的网络分析范畴.而ArcGIS的网络分析分为两类,分别是基于几何网络和网络数据集的网络分析.它们都可以实现最短路径功能.下面先介绍 ...
随机推荐
- [转载]Docker的安装配置及使用详解
简介 官网:http://www.docker.com/,点击get started进入下载,目前三个系统的docker容器都有,Windows版需要win10系统,我的是win7系统一开始用的 ...
- 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...
- GPU高性能计算-CUDA
前段时间有个同学的毕设是搞并行计算的,他基本不懂编程把我拉过去帮忙,我之前也没弄过,帮着搞了2天.先把代码贴上去,等有时间在把详细补充一些内容. CUDA编程主要是利用了显卡优越的并行计算能力,把一个 ...
- shell常用命令
wget wget -P /root url -O rename 实现文件下载指定目录和重命名
- keepalived健康检查方式
keepalived对后端realserver的健康检查方式主要有以下几种: TCP_CHECK:工作在第4层,keepalived向后端服务器发起一个tcp连接请求,如果后端服务器没有响应或超时,那 ...
- C++的隐式类型转换
C++是一种复杂的语言,其中有许多“好玩”的特性,学习C++的过程就像在海边捡一颗颗石头,只要坚持不懈,也许一颗颗小石头也能建起你自己小小的城堡. 废话完后,讲讲自己捡到的石头:隐式类型转换 学习出处 ...
- eyegaze
1. eye_gaze https://github.com/iitmcvg/eye-gaze 2.deepgaze https://github.com/mpatacchiola/deepgaze ...
- Linux_arm驱动之按键模拟脉冲实现定时器的精确计时
/***************************************************************** 内核驱动部分button_ker.c ************** ...
- SQL 列转行的实现
--列转行,逗号拼接指定列的值Oracle中写法:select wmsys.wm_concat(Field1) from TableASQL Server中写法:SELECT STUFF(( SELE ...
- 1236 - Pairs Forming LCM -- LightOj1236 (LCM)
http://lightoj.com/volume_showproblem.php?problem=1236 题目大意: 给你一个数n,让你求1到n之间的数(a,b && a<= ...