该着色方法一句着色图层中要素类的某个数值字段的属性值,按这个属性值为每种不同值得要素单独分配一种显示符号样式。关键在于获取该字段所有要素的唯一值(即将所有在该字段中属性值相同的要素归为一种),利用uniquevaluerenderer的addvalue方法即可进行渲染
需要添加的类库
具体代码(本例为单值渲染)
//获取字段中各要素属性唯一值
idatastatistics pdatastatistics = new datastatisticsclass();
pdatastatistics.field = "perimeter";//获取统计字段
pdatastatistics.cursor = pcursor;
penumreator = pdatastatistics.uniquevalues;
int fieldcount = pdatastatistics.uniquevaluecount;//唯一值个数,以此确定颜色带范围
iuniquevaluerenderer puniquevaluer = new uniquevaluerendererclass();
puniquevaluer.fieldcount = 1;//单值渲染
puniquevaluer.set_field(0, "perimeter");//渲染字段
ienumcolors penumcolor = getcolorramp(fieldcount).colors;
penumcolor.reset();
while (penumreator.movenext())
{
string value = penumreator.current.tostring();
if (value != null)
{
icolor pcolor = penumcolor.next();
isymbol psymbol = getsymbol(pcolor);
puniquevaluer.addvalue(value, "perimeter", psymbol);
//puniquevaluer.set_symbol(value, psymbol);
}
}
pgeolayer.renderer = puniquevaluer as ifeaturerenderer;
this.axmapcontrol1.activeview.partialrefresh(esriviewdrawphase.esriviewgeography, null, null);
this.axtoccontrol1.update();
}
private irandomcolorramp getcolorramp(int size)
{
irandomcolorramp prandomcolorramp = new randomcolorrampclass();
prandomcolorramp.starthue = 10;
prandomcolorramp.endhue = 300;
prandomcolorramp.maxsaturation =100;
prandomcolorramp.minsaturation = 0;
prandomcolorramp.maxvalue = 100;
prandomcolorramp.minvalue = 0;
prandomcolorramp.size = size;
bool ok = true;
prandomcolorramp.createramp(out ok);
return prandomcolorramp;
}
其中datastatistic和uniquevaluerenderer的field必须要明确,且为相同值
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论