public static void Renderer(ILayer layer)
{
IFeatureLayer pFeatureLayer = layer as IFeatureLayer;
IGeoFeatureLayer pGeoFeatureLayer = layer as IGeoFeatureLayer;
//获取图层上的feature
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
//定义单值图渲染组件
IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass();
//设置渲染字段对象
pUniqueValueRenderer.FieldCount = 1;
pUniqueValueRenderer.set_Field(0, "classify");
//创建填充符号
ISimpleFillSymbol PFillSymbol = new SimpleFillSymbolClass();
pUniqueValueRenderer.DefaultSymbol = (ISymbol)PFillSymbol;
pUniqueValueRenderer.UseDefaultSymbol = false;
//QI the table from the geoFeatureLayer and get the field number of
ITable pTable;
int fieldNumber;
pTable = pGeoFeatureLayer as ITable;
fieldNumber = pTable.FindField("classify");
if (fieldNumber == -1)
{
MessageBox.Show("Can't find field called ", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//创建并设置随机色谱
IRandomColorRamp pColorRamp = new RandomColorRampClass();
pColorRamp.StartHue = 0;
pColorRamp.MinValue = 99;
pColorRamp.MinSaturation = 15;
pColorRamp.EndHue = 360;
pColorRamp.MaxValue = 100;
pColorRamp.MaxSaturation = 30;
pColorRamp.Size = 107;
//pColorRamp.Size = pUniqueValueRenderer.ValueCount;
bool ok = true;
pColorRamp.CreateRamp(out ok);
IEnumColors pEnumRamp;
pEnumRamp = pColorRamp.Colors;
//为每个值设置一个符号
int n = pFeatureClass.FeatureCount(null);
for (int i = 0; i < n; i++)
{
IFeature pFeature = pFeatureCursor.NextFeature();
IClone pSourceClone = PFillSymbol as IClone;
ISimpleFillSymbol pSimpleFillSymbol = pSourceClone.Clone() as ISimpleFillSymbol;
string pFeatureValue = pFeature.get_Value(pFeature.Fields.FindField("classify")).ToString();
pUniqueValueRenderer.AddValue(pFeatureValue, "classify", (ISymbol)pSimpleFillSymbol);
}
//为每个符号设置颜色
for (int i = 0; i <= pUniqueValueRenderer.ValueCount - 1; i++)
{
string xv = pUniqueValueRenderer.get_Value(i);
if (xv != "")
{
ISimpleFillSymbol pNextSymbol = (ISimpleFillSymbol)pUniqueValueRenderer.get_Symbol(xv);
pNextSymbol.Color = pEnumRamp.Next();
pUniqueValueRenderer.set_Symbol(xv, (ISymbol)pNextSymbol);
}
}
//将单值图渲染对象与渲染图层挂钩
pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueRenderer;
pGeoFeatureLayer.DisplayField = "classify";
}