zoukankan      html  css  js  c++  java
  • Delphi ArcEngine 创建指北针

    function InsertNorthArrow(aePageLayoutControl: TPageLayoutControl; iStyle: SmallInt): Boolean;
    var
       pPageLayout: IPageLayout;
       pMap     : IMap;
       pActiveMap: IActiveView;
       pGraphicContainer: IGraphicsContainer;
       pMapFrame: IMapFrame;
       pMapSurround: IMapSurround;
       pMapSurroundFrame: IMapSurroundFrame;
       pUID     : UID;

       pEnvelope: IEnvelope;

       pNorthArrow: IMarkerNorthArrow;
       pCharacterMarkerSymbol: ICharacterMarkerSymbol;
    begin
       pUID := CoUID.Create as UID;
       pUID.Value := 'esriCarto.MarkerNorthArrow';

       pPageLayout := aePageLayoutControl.PageLayout;
       pActiveMap := pPageLayout as IActiveView;

       aePageLayoutControl.TrackCancel.Reset;
       pEnvelope := aePageLayoutControl.TrackRectangle;

       if (pEnvelope.IsEmpty) or (pActiveMap = nil) then
          Exit(False);

       pMapSurround := CreateSurround(pUID, pEnvelope, '指北针', pPageLayout);//这个函数并非 ae 自带的,是自己写的,请参考另外一个随笔

       // Delphi版 ArcEngine 创建MapSurround对象

       if pMapSurround = nil then
          Exit(False);

       pNorthArrow := pMapSurround as IMarkerNorthArrow;
       pCharacterMarkerSymbol := pNorthArrow.MarkerSymbol as ICharacterMarkerSymbol;
       pCharacterMarkerSymbol.CharacterIndex := iStyle;

       pNorthArrow.MarkerSymbol := pCharacterMarkerSymbol;
       pActiveMap.PartialRefresh(esriViewGraphics, nil, nil);

       Result := True;
    end;
  • 相关阅读:
    Redis(八)理解内存
    Redis(七)Redis的噩梦:阻塞
    Redis(六)复制
    Redis(五)持久化
    笔试面试经典问题
    两个栈实现一个队列
    单链表相关操作
    我的笔记本
    10进制正整数转4位定长的36进制字符串
    微软2016校园招聘在线笔试之Magic Box
  • 原文地址:https://www.cnblogs.com/chinacodegear/p/1416416.html
Copyright © 2011-2022 走看看