• Delphi ArcEngine 创建比例尺


    //本函数 是在 PageControl上拉选一个区域内 创建一个比例尺,比例尺的样式,我自己定义一个 枚举类型 如下

    type  
       ScaleType = (stAlternating, stDoubleAlternating, stHollow, stScaleLine, stSingleDivision, stSetpped);

    function InsertScaler(aePageLayoutControl: TPageLayoutControl; stType: ScaleType; sTitle: string): Boolean;

    var
       pPageLayout: IPageLayout;
       pScaleBar: IScaleBar;
       pMapFrame: IMapFrame;
       pMapSurroundFrame: IMapSurroundFrame;
       pMapSurround: IMapSurround;
       pElement : IElement;
       pElementPro: IElementProperties;

       pUID     : UID;
       pGraphicsContainer: IGraphicsContainer;
       pActiveMap: IActiveView;
       pMap     : IMap;
       pEnvelope: IEnvelope;

    begin
       //产生一个 UID 对象,使用它产生不同的 MapSurround 对象
       pUID := CoUID.Create as UID;
       pUID.Value := 'esriCarto.scalebar';

       pPageLayout := aePageLayoutControl.PageLayout;

       pActiveMap := pPageLayout as IActiveView;

       aePageLayoutControl.TrackCancel.Reset;
       pEnvelope := aePageLayoutControl.TrackRectangle;

       if (pEnvelope.IsEmpty) or (pActiveMap = nil) then
          Exit(False);

       pGraphicsContainer := pPageLayout as IGraphicsContainer;
       pActiveMap := pGraphicsContainer as IActiveView;
       pMap := pActiveMap.FocusMap;

       //获得与地图相关的 mapFrame
       pMapFrame := pGraphicsContainer.FindFrame(pMap) as IMapFrame;

       //产生MapSurroundFrame
       pMapSurroundFrame := pMapFrame.CreateSurroundFrame(pUID, nil);

       case stType of //比例尺样式选择
          stAlternating: pScaleBar := CoAlternatingScaleBar.Create as IScaleBar;
          stDoubleAlternating: pScaleBar := CoDoubleAlternatingScaleBar.Create as IScaleBar;
          stHollow: pScaleBar := CoHollowScaleBar.Create as IScaleBar;
          stScaleLine: pScaleBar := CoScaleLine.Create as IScaleBar;
          stSingleDivision: pScaleBar := CoSingleDivisionScaleBar.Create as IScaleBar;
          stSetpped: pScaleBar := CoSteppedScaleLine.Create as IScaleBar;
       end;
       //设置比例尺的属性
       pScaleBar.Division := 3;
       pScaleBar.Divisions := 3;
       pScaleBar.LabelGap := 4;
       pScaleBar.LabelPosition := esriAbove;//比例尺标签的 位置
       pScaleBar.Map := pMap;
       pScaleBar.Name := sTitle;
       pScaleBar.Subdivisions := 2;

       pScaleBar.Units := esriKilometers;
       pScaleBar.UnitLabelPosition := esriScaleBarAfterLabels;
       pScaleBar.UnitLabelGap := 4;
       pScaleBar.UnitLabel := '千米';

       pMapSurround := pScaleBar as IMapSurround;
       pMapSurroundFrame.MapSurround := pMapSurround;
       pElementPro := pMapSurroundFrame as IElementProperties;
       pElementPro.Name := '我的比例尺';

       //将mapsurroundframe添加到控件
       if not pEnvelope.IsEmpty then
       begin
          aePageLayoutControl.AddElement(pMapSurroundFrame as IElement, pEnvelope, EmptyParam, EmptyParam, 0);
          pActiveMap.PartialRefresh(esriViewGraphics, nil, nil);
          Result := True;
       end
       else
       begin     
          Result := False;
       end;

    end;
  • 相关阅读:
    Gitlab的安装
    转 Java操作PDF之iText详细入门
    ElasticSearch聚合(转)
    谷歌搜索技巧(转)https://www.runningcheese.com/google
    自学elastic search
    WinForm richtextbox 关键字变红色
    https采集12306(复制)
    LTS
    学习Android MediaPlayer
    UML基础知识
  • 原文地址:https://www.cnblogs.com/chinacodegear/p/1416410.html
Copyright © 2020-2023  润新知