zoukankan      html  css  js  c++  java
  • Delphi ArcEngine 根据条件添加文本注记

    function Annotation4Layer(aeMapControl: TMapControl; pLayer: ILayer; sField: string; pColor: IRgbColor;

      sWhere: string = ''; iTextSize: SmallInt = 9): Boolean;

    //带条件的 文字标注 ,指定图层 ,字段,颜色 和 条件表达式 ,文字大小

    var
      pFeatureLayer: IFeatureLayer;
      pFeatureCursor: IFeatureCursor;
      pFeature: IFeature;
      pFields: IFields;
      pEnvelope: IEnvelope;
      pPoint: IPoint;

      pTextSymbol: ITextSymbol;
      pTextElement: ITextElement;
      pElement: IElement;

      pActiveView: IActiveView;
      pGraphicsContainer: IGraphicsContainer;
      pQueryFilter: IQueryFilter;
      i: Integer;
    begin
      pFeatureLayer := pLayer as IFeatureLayer;

      if sWhere = '' then
      begin
        pFeatureCursor := pFeatureLayer.Search(nil, True);
      end
      else
      begin
        pQueryFilter := CoQueryFilter.Create as IQueryFilter;
        pQueryFilter.WhereClause := sWhere;
        try
          pFeatureCursor := pFeatureLayer.Search(pQueryFilter, True);
        except
          on E: Exception do
          begin
            ShowMessage('查询表达式错误!');
            Exit(False);
          end;
        end;
      end;

      pFeature := pFeatureCursor.NextFeature;

      if pFeature = nil then //空图层时 退出
        Exit(False);

      pFields := pFeature.Fields;
      i := pFields.FindField(sField);

      if i < 0 then //字段错误 退出
        Exit(False);

      pActiveView := aeMapControl.ActiveView;
      pGraphicsContainer := aeMapControl.Map as IGraphicsContainer;

      //文本符号
      pTextSymbol := CoTextSymbol.Create as ITextSymbol;
      pTextSymbol.Size := iTextSize;
      pTextSymbol.Color := pColor;

      pPoint := CoPoint.Create as IPoint;
      while pFeature <> nil do
      begin
        //文本元素
        pTextElement := CoTextElement.Create as ITextElement;
        pTextElement.ScaleText := True;
        pTextElement.Symbol := pTextSymbol;
        pTextElement.Text := VarToStr(pFeature.Value[i]);

        pEnvelope := pFeature.Extent;
        pPoint.PutCoords(pEnvelope.XMin + pEnvelope.Width / 2, pEnvelope.YMin + pEnvelope.Height / 2);

        pElement := pTextElement as IElement;
        pElement.Geometry := pPoint;

        pGraphicsContainer.AddElement(pElement, 0);
        pFeature := pFeatureCursor.NextFeature;
      end;
      pActiveView.PartialRefresh(esriViewGraphics, nil, nil);
      Result := True;
    end;
  • 相关阅读:
    函数是什么?
    设置mac笔记本为固定ip
    JMeter-充值-生成随机数
    JMeter_方案上架,遇到的问题及解决
    做有态度的测试做
    JMeter-标的上架调整与完成
    上标-担保机构
    JMeter已传值但是提示为空
    JMeter上架标的(yyb-csg)
    JMeter中的正则表达式的匹配
  • 原文地址:https://www.cnblogs.com/chinacodegear/p/1428866.html
Copyright © 2011-2022 走看看