zoukankan      html  css  js  c++  java
  • Delphi ArcEngine 创建比例尺

     Delphi ArcEngine 创建比例尺,https://www.cnblogs.com/chinacodegear/archive/2009/03/19/1416410.html
    
    //本函数 是在 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; 
  • 相关阅读:
    linux查看日志文件内容命令tail、cat、tac、head、echo
    改变自己的128种方法,教你变得更优秀!
    php 23种设计模式
    Swoole消息推送
    PHP 出现 502 解决方案
    【centos7】添加开机启动服务/脚本
    curl 参数配置详解
    i系列标准-互联网周刊
    MySQL 设计与开发规范2
    Cocos Creator webviw网页置顶增加返回键的方法
  • 原文地址:https://www.cnblogs.com/gisoracle/p/15643267.html
Copyright © 2011-2022 走看看