标签:pActiveMap Delphi IScaleBar pScaleBar aePageLayoutControl 比例尺 Create 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;
标签:pActiveMap,Delphi,IScaleBar,pScaleBar,aePageLayoutControl,比例尺,Create,ArcEngine 来源: https://www.cnblogs.com/gisoracle/p/15643267.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。