ArcEngine 渲染的使用

1.Feature的基本渲染方法

1.简单渲染
    简单渲染是ArcEngine的默认渲染,我们打开一个FeatureClass,建立一FeatureLayer的时候,如果没有给FeatureLayer设置Renderer那么使用的就是简单渲染。简单渲染对整个图层中的所有Feature使用同一种方式显示。简单渲染在ArcEngine中ISimpleRenderer来表示。

ISimpleRenderer的使用方式如下:
 //假设layer是一个IFeatureLayer,获取IGeoFeatureLayer
  IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer;
  //构造SimpleRenderer
  ISimpleRenderer renderer=new SimpleRendererClass();
  renderer.description="简单的渲染一下";
  renderer.Label="符号的标签";
  //假设sym是一个和该图层中Geometry类型对应的符号;
  renderer.Symbol=sym;
  //为图层设置渲染,注意需要刷新该图层。
  geoLayer.Renderer=renderer;

2.独立值/多字段独立值渲染

独立值/多字段独立值渲染,根据Feature的某一个字段的数据或某几个字段的组合结果来确定符号。具有相同值或相同组合值的Feature,使用一样的符号。在使用多个字段的使用,每个字段的取值之间使用分割符来连接。字段的取值顺序和在Renderer中设置的一样。
    基本使用方式如下:
    //假设layer是一个IFeatureLayer,获取IGeoFeatureLayer
    IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer;
    //构造一个UniqueValueRenderer
    IUniqueValueRenderer renderer=new UniqueValueRendererClass();
    //假设使用两个字段来渲染
    renderer.FieldCount=2;
    //假设YSLX字段表示要素类型
    //假设YSYT字段表示要数用途
    renderer.set_Field(0,"YSLX");
    renderer.set_Field(1,"YSYT");
    //字段之间使用 | 来连接(默认取值)
    renderer.FieldDelimiter="|";
    //设置默认符号
    renderer.DefaultSymbol=defaultSymbol;
    renderer.DefaultLabel="默认Label";
    //添加值
    renderer.addValue("房屋|民居","民居房屋",MJSymbol);
    renderer.addValue("房屋|商业用地","商业用地",SYSymbol);
    ...
    //还可以通过set_Symbol,set_Heading、set_Value来修改上述设置。
    geoLayer.Renderer=renderer.

3.点密度/多字段点密度
    点密度图通过在Feature的图形上打点来表示数据的数多,点越密集表示数据量越大。 还可以使用多字段的点密度图。这个使用同一个Feature上就可以显示几种不同的点。注意点密度图有一个特殊的地方:点密度图使用的符号是面状符号,而其中有需要包括点状符号。
    接口使用如下:
     IDotDensityRenderer renderer=new DotDensityRendererClass ();
     IRendererFields flds=(IRendererFields)renderer;
     flds.AddField("MJ ","面积");
     flds.AddField("RK","人口");
     IDotDensityFillSymbol ddSym=new DotDensityFillSymbolClass();
     ISymbolArray symArray=(ISymbolArray)ddSym;
     symArray.AddSymbol(mjSymbol);
     symArray.AddSymbol(rkSymbol);
     ddSym.Outline =(ILineSymbol)outlineSymbol ;   
     ddSym.DotSize =10 ;
     ddSym.FixedPlacement=true;   
     renderer.DotDensitySymbol =ddSym;
     renderer.DotValue=20 ;
     renderer.MaintainSize=this.m_dotdensityParam .MaintainSize ;
     IGeoFeatureLayer geoLayer=(IGeoFeatureLayer)layer ;
     geoLayer.Renderer =(IFeatureRenderer)renderer;

4.数据分级绘制(使用IClassBreaksRenderer)
5.饼图/直方图(使用IChartRenderer)

6.按比例尺渲染(使IScaleDependentRenderer)
7.比例符号渲染(使用 IProportionalSymbolRenderer )
2.图例的使用
    图例的使用通过ILegendInfo接口。也可以自己实现该接口。
3.渲染层次
    使用ILevelRender 接口。该接口可以指定一 当前的Level(-1)表示绘制全部。然后 提供一个符号数组 ,注意每个符号要指定Level .如果不指定就默认为0。

4.透明度控制
    透明度控制使用 ITransparencyRenderer 接口。该接口允许指定一个字段,字段取值用来表示透明度。注意:透明度的取值在0--100之间。
5.数据正规化
    数据正规化用 IDataNormalization 接口来表示。该接口提供了几种正规化表示方法。
6.部分渲染
    部分渲染通过使用IDataExclusion  来实现。该接口允许提供过滤语句来过滤掉不需要渲染的Feature。同时也可以给他们制定特殊的符号。同时控制是否显示。
7.旋转控制
    旋转控制通过使用IRotationRenderer 接口来表示。该接口要求提供旋转角度的字段。同时要求提供旋转的方法。
8.数据样本
    使用IDataSampling接口。

posted @ 2013-03-18 23:33  清灵阁主  阅读(420)  评论(0)    收藏  举报