打印当前地图视野

//按钮事件中调用打印方法即可

printTheMap(this.axMapControl1.ActiveView);

//打印当前视野
        public void printTheMap(IActiveView pActiveView)
        {
            IPaper pPaper = new Paper();
            IPrinter pPrinter = new EmfPrinterClass();
            PrintDocument sysPrintDocumentDocument = new PrintDocument();
            pPaper.PrinterName = sysPrintDocumentDocument.PrinterSettings.PrinterName;
            pPrinter.Paper = pPaper;
            int Resolution = pPrinter.Resolution;
            double w, h;
            IEnvelope PEnvelope = pActiveView.Extent;
            w = PEnvelope.Width;
            h = PEnvelope.Height;
            double pw, ph;//纸张
            pPrinter.QueryPaperSize(out pw, out ph);
            tagRECT userRECT = pActiveView.ExportFrame;
            userRECT.left = (int)(pPrinter.PrintableBounds.XMin * Resolution);
            userRECT.top = (int)(pPrinter.PrintableBounds.YMin * Resolution);
            if ((w / h) > (pw / ph))//以宽度来调整高度
            {
                userRECT.right = userRECT.left + (int)(pPrinter.PrintableBounds.Width * Resolution);
                userRECT.bottom = userRECT.top + (int)((pPrinter.PrintableBounds.Width * Resolution) * h / w);
            }
            else
            {
                userRECT.bottom = userRECT.top + (int)(pPrinter.PrintableBounds.Height * Resolution);
                userRECT.right = userRECT.left + (int)(pPrinter.PrintableBounds.Height * Resolution * w / h);
            }
            IEnvelope pDriverBounds = new EnvelopeClass();
            pDriverBounds.PutCoords(userRECT.left, userRECT.top, userRECT.right, userRECT.bottom);
            ITrackCancel pCancel = new CancelTrackerClass();
            int hdc = pPrinter.StartPrinting(pDriverBounds, 0);
            pActiveView.Output(hdc, pPrinter.Resolution,
            ref userRECT, pActiveView.Extent, pCancel);
            pPrinter.FinishPrinting();
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值