• 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,并注明来自博客园。
  • 相关阅读:
    【MyBatis】Inappropriate OGNL expression
    【java】前补零
    【js】前补零
    【Java】导出excel.xlsx
    【插件】fileinput
    【前端】WebSocket is already in CLOSING or CLOSED state?
    【HTML】input标签添加提示内容
    学习问题记录 -- 对象和引用
    八数码难题
    Java 逻辑运算符 & 与 &&的区别
  • 原文地址:https://www.cnblogs.com/leebokeyuan/p/6768437.html
Copyright © 2020-2023  润新知