zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    linux g++编译dxf文件C++解析库dxflib
    linux g++使用总结
    一个使用three.js的网页DXF文件查看器dxf viewer
    node.js教程基础:node.js访问操作系统
    node.js教程基础:node.js全局对象
    node.js教程基础:node.js命令行选项
    node.js教程基础:node.js包管理器
    node.js教程基础:node.js REPL
    node.js教程基础:第一个node.js程序
    node.js教程基础:node.js安装
  • 原文地址:https://www.cnblogs.com/chinacodegear/p/1416410.html
Copyright © 2011-2022 走看看