Delphi版 创建SimpleRenderer专题地图[增强版]

//对给定的图层的某一字段,用指定的颜色和样式创建专题

function SimpleRenderer(pLayer: ILayer; sField: string; pColor: IColor; eStyle: TOleEnum): Boolean;
var
  pSimpleRenderer: ISimpleRenderer;
  pSimpleFillSymbol: ISimpleFillSymbol;
  pSimpleMarkSymbol: ISimpleMarkerSymbol;
  pSimpleLineSymbol: ISimpleLineSymbol;
  pRenderer: ITransparencyRenderer;
  pGeoLayer: IGeoFeatureLayer;
begin
  try
    pGeoLayer := pLayer as IGeoFeatureLayer;
    pSimpleRenderer := CoSimpleRenderer.Create as ISimpleRenderer;
    case (pLayer as IGeoFeatureLayer).FeatureClass.ShapeType of
      esriGeometryPoint, esriGeometryMultipoint:
        begin
          pSimpleMarkSymbol := CoSimpleMarkerSymbol.Create as ISimpleMarkerSymbol;
          pSimpleMarkSymbol.Color := pColor;
          pSimpleMarkSymbol.Style := esriSMSCircle;
          pSimpleMarkSymbol.Size := 7;
          pSimpleMarkSymbol.Outline := True;

          pSimpleRenderer.Symbol := pSimpleMarkSymbol as ISymbol;

        end;

      esriGeometryLine, esriGeometryPolyline:

        begin
          pSimpleLineSymbol := CoSimpleLineSymbol.Create as ISimpleLineSymbol;
          pSimpleLineSymbol.Color := pColor;
          pSimpleLineSymbol.Style := esriSLSSolid;
          pSimpleLineSymbol.Width := 2;
          pSimpleRenderer.Symbol := pSimpleLineSymbol as ISymbol;
        end;
      esriGeometryPolygon:
        begin
          pSimpleFillSymbol := CoSimpleFillSymbol.Create as ISimpleFillSymbol;
          pSimpleFillSymbol.Color := pColor as IColor;
          pSimpleFillSymbol.Style := eStyle;
          pSimpleRenderer.Symbol := pSimpleFillSymbol as ISymbol;
        end;
    end;
    pSimpleRenderer.Description := '透明度专题';
    pSimpleRenderer.Label_ := sField;
    pRenderer := pSimpleRenderer as ITransparencyRenderer;
    pRenderer.TransparencyField := sField;
    pGeoLayer.Renderer := pRenderer as IFeatureRenderer;
  except
    Result := False;
    Exit;
  end;
  Result := True;
end;

 //注意调用了本函数后,别忘了刷新MapControl控件的视图啊。

 

posted on 2009-03-06 00:11  知真道  阅读(526)  评论(0编辑  收藏  举报