ArcEngine 专题图制作 IUniqueValueRenderer唯一值渲染 指定颜色

主程序代码:

IGeoFeatureLayer pGeolyr = axMapControl1.get_Layer(0) as IGeoFeatureLayer;
IUniqueValueRenderer pUniqueRenderer = new UniqueValueRenderer();

//value是进行唯一值渲染的列名
pUniqueRenderer.FieldCount = 1;
pUniqueRenderer.set_Field(0,"value");

//指定唯一的value值对应的颜色与Symbol
//这里的value值分别有“优”、“良”、“一般”、“较差”、“差”
IColor pColor1 = GetRgbColor(14,204,14);
ISymbol PSymbol1 = GetSymbol(pColor1);
pUniqueRenderer.AddValue("优","value",pSymbol1);

IColor pColor2 = GetRgbColor(128,232,116);
ISymbol PSymbol2 = GetSymbol(pColor2);
pUniqueRenderer.AddValue("良","value",pSymbol2);

IColor pColor3 = GetRgbColor(204,255,204);
ISymbol PSymbol3 = GetSymbol(pColor3);
pUniqueRenderer.AddValue("一般","value",pSymbol3);

IColor pColor4 = GetRgbColor(255,211,127);
ISymbol PSymbol4 = GetSymbol(pColor4);
pUniqueRenderer.AddValue("较差","value",pSymbol4);

IColor pColor5 = GetRgbColor(255,127,127);
ISymbol PSymbol5 = GetSymbol(pColor5);
pUniqueRenderer.AddValue("差","value",pSymbol5);

//渲染
pGeolyr.Renderer = pUniqueRenderer as IFeatureRenderer;

//刷新
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);
axMapControl1.Refresh();

GetRgbColor()与GetSymbol():

private IRgbColor GetRgbColor(int r,int g,int b)
{
  IRgbColor pRgbColor = null;
  pRgbColor = new RgbColorClass();
  pRgbColor.Red = r;
  pRgbColor.Green = g;
  pRgbColor.Blue = b;
  return pRgbColor;
}

private  ISymbol GetSymbol(IColor pColor)
{
  ISymbol pSymbol;
  ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();
  pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
  pSimpleFillSymbol.Color = pColor;
  pSymbol = pSimpleFillSymbol as ISymbol;
  return pSymbol;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcEngine中实现点要素层的唯一符号化,您可以按照以下步骤进行操作: 1. 打开要素类并获取要素集合。使用IFeatureClass接口打开要素类,并使用IFeatureCursor接口获取要素集合。 ```csharp IFeatureClass featureClass = ...; // 打开要素类 IFeatureCursor featureCursor = featureClass.Search(null, false); // 获取要素集合 ``` 2. 创建唯一符号化渲染器。使用ISimpleRenderer接口创建一个新的SimpleRenderer对象,并使用IUniqueValueRenderer接口将其转换为唯一符号化渲染器。 ```csharp ISimpleRenderer simpleRenderer = new SimpleRenderer(); IUniqueValueRenderer uniqueValueRenderer = simpleRenderer as IUniqueValueRenderer; ``` 3. 设置字段和符号。指定用于唯一分类的字段,并为每个唯一设置符号。 ```csharp uniqueValueRenderer.FieldCount = 1; // 设置字段数量 uniqueValueRenderer.set_Field(0, "FieldName"); // 设置用于分类的字段名称 // 为每个唯一设置符号 ISymbol symbol = ...; // 设置符号 uniqueValueRenderer.AddValue("Value1", "", symbol); // 添加第一个唯一和对应的符号 uniqueValueRenderer.AddValue("Value2", "", symbol); // 添加第二个唯一和对应的符号 // ... // 可以重复上述步骤为更多唯一设置符号 ``` 4. 应用渲染器到层。获取要素层对象,并将唯一符号化渲染器应用到层的渲染器属性中。 ```csharp IFeatureLayer featureLayer = ...; // 获取要素层对象 featureLayer.Renderer = uniqueValueRenderer as IFeatureRenderer; // 应用渲染器到层 ``` 5. 刷新地并显示唯一符号化的结果。调用IMap接口的Refresh方法刷新地,并使用IActiveView接口的Refresh和PartialRefresh方法来更新显示。 ```csharp IMap map = ...; // 获取地对象 map.Refresh(); // 刷新地 IActiveView activeView = map as IActiveView; activeView.Refresh(); // 刷新活动视 activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); // 部分刷新,更新地理数据 ``` 请根据您的具体需求自行填充代码中的缺失部分,例如打开要素类、设置字段和符号等。希望这些信息对您有所帮助!如有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值