AE:IPersistStream接口进行对象保存和读取

【注】:IPersistStream接口的类的对象进行保存和读取,如Element,Map等等,当然猜想IPersistStream能够实现读取Excel表,但还没结果。

 

如下用C#实现PageLayout保存和读取Dataframe 代码:

  

IActiveView pActiveView = null;
IPageLayout pPagelayout = null;
IPageLayoutControl pPageCtrl = null;

IMap pMap;

IGraphicsContainer pGraphicsContainer = null;

ITransform2D pTransform2D = null;//图形平移、缩放接口

pPageCtrl   = axPageLayoutControl1.Object as IPageLayoutControl;
pPagelayout = pPageCtrl.PageLayout;
pActiveView = pPagelayout as IActiveView;
pMap = pActiveView.FocusMap;
           

pGraphicsContainer   = pActiveView.GraphicsContainer;

IEnvelope pEnvBound = pMapFrame.Geometry.Envelope;

 

IMemoryBlobStream pMemoryBlobStream = null;
IElement pMapFrame = null;
IObjectStream pObjectStream = null;
IPersistStream pPersistStream = null;
IFrameElement pFrmElement = null;
IElementProperties pElementProperties = null;

 

//保存当前Dataframe至文件

sFramePath = "C://DataFrame.blb";

pFrmElement = pGraphicsContainer.FindFrame(pMap);
pMapFrame = pFrmElement as IElement;
           
pObjectStream = new ObjectStream();
pMemoryBlobStream = new MemoryBlobStream();

pPersistStream = pMapFrame as IPersistStream;
          
pObjectStream.Stream = pMemoryBlobStream;
pPersistStream.Save(pObjectStream, 1);
pMemoryBlobStream.SaveToFile(sFramePath);

 

//读取文件并在当前视图显示

pMemoryBlobStream = new MemoryBlobStream();
pObjectStream = new ObjectStream();
pMapFrame = new MapFrame();
pPersistStream = pMapFrame as IPersistStream;
pElementProperties = pMapFrame as IElementProperties;

pMemoryBlobStream.LoadFromFile(sFramePath);
pObjectStream.Stream = pMemoryBlobStream;
pPersistStream.Load(pObjectStream as IStream);
pElementProperties.Name = "Map1";

//平移、缩放MapFrame

IEnvelope pEnvSubMapFrm= pMapFrame.Geometry.Envelope;

doubled OffsetX = pEnvBound.XMin - pEnvSubMapFrm.XMin;
double dOffsetY = pEnvBound.YMin - pEnvSubMapFrm.YMin;
pTransform2D.Move(dOffsetX, dOffsetY);//平移
IPoint pPtOrigin = new ESRI.ArcGIS.Geometry.Point();
pPtOrigin.PutCoords(pEnvBound.XMin, pEnvBound.YMin);
dTmp = pEnvBound.Width / pEnvSubMapFrm.Width;
pTransform2D.Scale(pPtOrigin, dTmp, 1);//缩放:X方向缩放,Y方向不缩放

pMapFrame.Geometry = pTransform2D as IGeometry;

pGraphicsContainer.AddElement(pMapFrame , 0);
pGraphicsContainer.UpdateElement(pMapFrame );

IGraphicsContainerSelect pGraphicsContainerSelect = pGraphicsContainer as IGraphicsContainerSelect;

pGraphicsContainerSelect.UnselectElement(pMapFrame);
          
pActiveView.Refresh();

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值