用到的引用
using ESRI.ArcGIS.Output; //文件导出用
using ESRI.ArcGIS.Geometry; //获得Envelope用
用到的关键类/接口
类/接口 | 描述 |
IExporter | 提供访问地图导出类的方法 |
JpegExporterClass | 导出jpg文件的类 |
tagRect | 用来存储坐标范围的结构体 |
IEnvelope | 提供访问图形外包络矩形的方法 |
EnvelopeClass | 用于创建外包络矩形的类 |
实现思路:
Exporter有三个必要参数:文件保存位置 path、分辨率 resolution、栅格范围 pixel bound,按照这个思路进行
- 获取保存位置
- 指定输出图片类型
- 获取AxMapControl分辨率
- 获取输出图片大小
- 使用IActiveView接口的Output方法输出
详细步骤:
创建导出Jpg类,指定保存路径及分辨率
IExporter pExport = new JpegExporterClass(); //创建jpg格式输出
pExp.Resolution = resolution;
pExp.ExportFileName = path;
获取输出图片大小
tagRECT tag = axMapControl1.ActiveView.ExportFrame;
IEnvelope deviceEnveloe = new EnvelopeClass();
deviceEnveloe.PutCoords(deviceRect.left, deviceRect.top, deviceRect.right, deviceRect.bottom); //定义与初始化Envelope
pExport.PixelBounds = deviceEnveloe; //设置范围为全图
使用IActiveView接口的Output方法输出
axMapControl1.ActiveView.Output(pExport.StartExporting(), pExport.Resolution, ref deviceRect, axMapControl1.ActiveView.Extent,null);
pExport.FinishExporting(); //与输出有关的都会在最后关闭输出流
全部代码(函数)
private void saveJpg(string path)
{
//获得范围
double resolution = axMapControl1.ActiveView.ScreenDisplay.DisplayTransformation.Resolution;
tagRECT tag = axMapControl1.ActiveView.ExportFrame;
IEnvelope pEnvelope = new EnvelopeClass();
pEnvelope.PutCoords(rect.left, rect.bottom, rect.right, rect.top);
IExporter pExporter = new JpegExporterClass();
pExporter.ExportFileName = path;
pExporter.Resolution = (short)resolution;
pExporter.PixelBounds = pEnvelope;
axMapControl1.ActiveView.Output(pExporter.StartExporting(), pExporter.Resolution, ref rect, axMapControl1.Extent, null);
pExporter.FinishExporting();
}