• 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; 
  • 相关阅读:
    RMI方式Ehcache集群的源码分析
    Bootstrap简单HelloWorld入门教程
    深入剖析Tomcat会话机制
    Redis主从和HA配置
    Ajax
    java数组复制===clone()
    java使用array.copy复制数组
    java数组复制的简单方法(一)
    java ------------用Array.sort()输出数组元素的最大值,最小值,平均值~~~~
    java从键盘输入若干数,求其最大值,最小值,平均值。等等
  • 原文地址:https://www.cnblogs.com/gisoracle/p/15643267.html
Copyright © 2020-2023  润新知