zoukankan      html  css  js  c++  java
  • C#+ArcEngine打印横向和纵向调整

    在用C#开发ArcEngine程序实现Pagelaylout打印功能的时候,在实现横向打印的时候,总会出现如下图的情况

      

    通过修改axPageLayoutControl1.Page.Orientation = 1;属性发现也不作用;需要通过修改IMapFrame进行修改能够实现横向和纵向的合理变化;

     

    横向显示代码如下

        IMap pMap;
    
        IGraphicsContainer pGraphicsContainer;
    
        IMapFrame pMapFrame;
    
        pMap = axPageLayoutControl1.ActiveView.FocusMap;
    
        pGraphicsContainer = (IGraphicsContainer)axPageLayoutControl1.PageLayout;
    
        pMapFrame = (IMapFrame)pGraphicsContainer.FindFrame(pMap);
    
        ISymbolBorder pSymborder = new SymbolBorderClass();
    
        pSymborder.CornerRounding = 0;
    
        IBorder pBorder = pSymborder;
    
        pMapFrame.Border = pBorder;
    
        pMapFrame.ExtentType = esriExtentTypeEnum.esriExtentBounds;
    
        IElement pElement = (IElement)pMapFrame;
    
        IEnvelope pEnvelop =  new EnvelopeClass();
    
        pEnvelop.PutCoords(0.5, 0.5, 29.2, 20.5);   //这里设置mapframe的大小
    
        IGeometry pGeometry = pEnvelop;
    
        pElement.Geometry = pGeometry;
    
        IPage pPage = axPageLayoutControl1.Page;
    
        pPage.Orientation = 1;
    
        pPage.PutCustomSize(29.7, 21.0);  //这里设置page的大小
    
        axPageLayoutControl1.ActiveView.Refresh();

    效果如下图

      

        IMap pMap;
    
        IGraphicsContainer pGraphicsContainer;
    
        IMapFrame pMapFrame;
    
        pMap = axPageLayoutControl1.ActiveView.FocusMap;
    
        pGraphicsContainer = (IGraphicsContainer)axPageLayoutControl1.PageLayout;
    
        pMapFrame = (IMapFrame)pGraphicsContainer.FindFrame(pMap);
    
        ISymbolBorder pSymborder = new SymbolBorderClass();
    
        pSymborder.CornerRounding = 0;
    
        IBorder pBorder = pSymborder;
    
        pMapFrame.Border = pBorder;
    
        pMapFrame.ExtentType = esriExtentTypeEnum.esriExtentBounds;
    
        IElement pElement = (IElement)pMapFrame;
    
        IEnvelope pEnvelop =  new EnvelopeClass();
    
        pEnvelop.PutCoords(0.5, 0.5, 20.5,29.2);   //这里设置mapframe的大小
    
        IGeometry pGeometry = pEnvelop;
    
        pElement.Geometry = pGeometry;
    
        IPage pPage = axPageLayoutControl1.Page;
    
        pPage.Orientation = 2;
    
        pPage.PutCustomSize(21.0, 29.7);  //这里设置page的大小
    
        axPageLayoutControl1.ActiveView.Refresh();

    效果如下图

     

    本实例使用A4纸张的尺寸进行测试,具体的应用还要根据实际的情况进行设置。

    纵向显示代码如下

    本博客有部分内容来自网络,如有问题请联系:hebeilijianghua@qq.com,并注明来自博客园。
  • 相关阅读:
    Elastic Search快速上手(2):将数据存入ES
    汇编学习笔记(24)
    汇编学习笔记(23)
    汇编学习笔记(22)
    汇编学习笔记(21)
    汇编学习笔记(20)
    汇编学习笔记(19)
    汇编学习笔记(18)
    汇编学习笔记(17)
    汇编学习笔记(16)
  • 原文地址:https://www.cnblogs.com/leebokeyuan/p/6768437.html
Copyright © 2011-2022 走看看