ArcGISEngine开发系列:将地图导出为图片的两种方法.docVIP

ArcGISEngine开发系列:将地图导出为图片的两种方法.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ArcGISEngine开发系列:将地图导出为图片的两种方法

ArcGIS?Engine开发系列:将地图导出为图片的两种方法 ??? 在ArcGIS的开发中,我们经常需要将当前地图打印(或是转出)到图片文件中。将Map或Layout中的图象转出有两种方法,一种为通过 IActiveView的OutPut函数,另外一种是通过IExport接口来实现。第一种方法导出速度较快,实现也比较方便,但该方法对于图片的行或 列数超过10000左右时,导出经常会失败(具体原因未知),第二种方法导出速度较慢,但效果较好,且可以在导出过程中通过ITrackCancel来中 止导出操作。 ?? 通过IActiveView的方式导出是通过创建Graphics对象来实现,具体示例代码如下: /// summary /// 将Map上指定范围(该范围为规则区域)内的内容输出到Image,注意,当图片的行数或列数超过10000左右时,出现原因示知的失败 /// /summary /// param name=pMap需转出的MAP/param /// param name=outRect输出的图片大小/param /// param name=pEnvelope指定的输出范围(为Envelope类型)/param /// returns输出的Image 具体需要保存为什么格式,可通过Image对象来实现/returns public static Image SaveCurrentToImage(IMap pMap, Size outRect, IEnvelope pEnvelope) ?{ ??????//赋值 ??????tagRECT rect = new tagRECT(); ??????rect.left = rect.top = 0; ??????rect.right = outRect.Width; ??????rect.bottom = outRect.Height; ??????try ??????{???????????????? ??????????//转换成 activeView,若为ILayout,则将Layout转换为IActiveView ??????????IActiveView pActiveView = (IActiveView)pMap; ??????????// 创建图像,为24位色 ??????????Image image = new Bitmap(outRect.Width, outRect.Height); //, System.Drawing.Imaging.PixelFormat.Format24bppRgb); ??????????System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image); ??????????// 填充背景色(白色) ??????????g.FillRectangle(Brushes.White, 0, 0, outRect.Width, outRect.Height); ??????????int dpi = (int)(outRect.Width / pEnvelope.Width); ??????????pActiveView.Output(g.GetHdc().ToInt32(), dpi, ref rect, pEnvelope, null); ??????????g.ReleaseHdc();???????????? ??????????return image; ?????} ?????catch (Exception excp) ?????{ ????????MessageBox.Show(excp.Message + 将当前地图转出出错,原因未知, 出错提示, MessageBoxButtons.OK, MessageBoxIcon.Error); ??????????return null; ??????} ?} ?? 通过IExport接口实现的导出,也需要通过IActiveView的OutPut来实现,但其转出句柄为IExport的 StartExporting函数返回的DC,具体示例代码如下: //输出当前地图至指定的文件???? public void ExportMapExtent(IActiveView pView, Size outRect,string outPath) {??????????? ??? try ??? { ??????? //参数检查 ??????? if pView == null ) ??????? { ??????????? throw new Exception(输入参数错误,无法生成图片文件!); ???

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档