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,并注明来自博客园。
  • 相关阅读:
    kuangbin专题一:K题,POJ3984:迷宫问题(水)
    kuangbin专题一:H题,POJ3414:Pots
    IBM Lotus Domino V8.5 服务器管理入门手册
    Ubuntu命令的学习_crontab计划任务_详细用法
    没有主题、没有主题、没有主题
    Ubuntu命令的学习——安装vim软件的方法&查找文件
    Ubuntu命令的学习——添加新用户的方法
    继续Ubuntu中的命令的学习
    python-算法 于博客__Re__处复制
    pythonDay09-Linux系统ubuntu命令的学习
  • 原文地址:https://www.cnblogs.com/leebokeyuan/p/6768437.html
Copyright © 2011-2022 走看看