• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi ArcEngine 创建比例尺

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 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; 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab mat介绍.txt - 技术蛀虫发布时间:2022-07-18
下一篇:
MatLab GUI Load .mat File 导入mat文件发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap