- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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对象来实现/returnspublic 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(输入参数错误,无法生成图片文件!);???
您可能关注的文档
最近下载
- SH_T 3046-2024《石油化工立式圆筒形钢制焊接储罐设计规范》.pdf
- 智慧楼宇BIM云服务平台建设及智慧楼宇智能化建设方案(AI人工智能、物联网、大数据、云计算、互联网)共180页.pptx VIP
- 四(下)语文园地必背重点.pdf
- 中国的入世承诺.pdf VIP
- 2025年广东省深圳市中考英语模拟练习卷(含解析).pdf VIP
- Excel财务数据分析与可视化 习题及答案.pdf VIP
- 入团志愿书空表模板(可打印用) .pdf VIP
- 药店动态质量管理知识(一)答案-2025年执业药师继续教育.docx VIP
- 建筑工程图集 07SJ504-1 隔断、隔断墙(一).pdf VIP
- 乐迪 Pixhawk飞控多轴使用说明书 V1.4.2.pdf
文档评论(0)