使用IUniqueValueRenderer在同一层中根据字段渲染出不同颜色收藏

public static void UniqueValueRenderer(ILayer layer)
  {
   IFeatureLayer pFLayer = layer  as IFeatureLayer;
   IGeoFeatureLayer geoLayer = layer as IGeoFeatureLayer;
   IFeatureClass fcls = pFLayer.FeatureClass;
   IQueryFilter pQueryFilter = new  QueryFilterClass();
   IFeatureCursor fCursor = fcls.Search(pQueryFilter,false);
   IRandomColorRamp rx = new RandomColorRampClass();
   rx.MinSaturation = 15;
   rx.MaxSaturation = 30;
   rx.MinValue = 85;
   rx.MaxValue = 100;
   rx.StartHue = 0;
   rx.EndHue = 360;
   rx.Size =100;
   bool ok;;
   rx.CreateRamp(out ok);
   IEnumColors RColors = rx.Colors;
   RColors.Reset();
   IUniqueValueRenderer pRender = new UniqueValueRendererClass();
   pRender.FieldCount=1;
   pRender.set_Field(0,"乡名");
   IFeature pFeat = fCursor.NextFeature();
   int index = pFeat.Fields.FindField("乡名");
   while(pFeat!=null)
   {
    ISimpleFillSymbol symd = new SimpleFillSymbolClass();
    symd.Style=esriSimpleFillStyle.esriSFSSolid;
    symd.Outline.Width=1;
    symd.Color = RColors.Next();
    string valuestr = pFeat.get_Value(index).ToString();
    pRender.AddValue(valuestr,valuestr,symd as ISymbol);
    pFeat = fCursor.NextFeature();
   }
   geoLayer.Renderer = pRender as IFeatureRenderer;
  }
posted @   温景良(Jason)  Views(2973)  Comments(0Edit  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示