02

22

ArcGIS Engine下实现地图输出

    我们在用ArcGIS Engine定制开发的时候,常常需要将当前的地图文档输出,或者以bmp的形式拷贝到剪贴板,那么到底该如何实现这些操作呢?这篇文章将会给我们介绍两种常用的方法。
一、实现像ArcMap的Edit菜单下Copy Map to Clipboard
实际上AE并没有提供实现这一功能的方法,但我们可以采用Windows32 API函数来实现。

思路:获取到MapControl的句柄然后实现一个一般的剪贴板拷贝程序,将MapControl范围内的视图以位图形式复制过去。以下代码片段供参考:

CWnd *pWndCal =GetDlgItem(IDC_MAPCONTROL1)    //获取指MapControl的指针
CBitmap bitmap 
CClientDC dc(pWndCal)                       //获得MapControl客户区的设备环境
 memdc.CreateCompatibleDC(&dc)                   //创建和指定dc兼容的内存dc
pWndCal->GetClientRect(rect)                   //获得MapControl的范围(Client Rectangle)
 //创建一个和指定设备环境兼容的位图bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height())
CBitmap* poldbitmap = memdc.SelectObject(&bitmap)
memdc.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY) 
pWndCal->OpenClipboard()                        //打开剪贴板
SetClipboardData(CF_BITMAP,bitmap.GetSafeHandle())              //向剪贴板增加地图

二、采用ExportMap将地图输出为图片
AE给我们提供了很多种将地图输出的方式,包括文件方式和打印等,这些方式又受不同参数的控制有着不同的效果。要想得到符合我们要求的效果,就必须了解这些方法所表达的意思和参数的内容,下面简要说明一下,其它的可以参考开发文档。

思路:采用IActiveView接口下的output方法,可以将地图输出为上十种格式,具体的格式受IExport类型限制,如ExportBMP,ExportPNG、ExportJPEG等,下面以输出为JPEG格式来说明。

首先定义ExportJPEG的实例pExport,然后设置其相关的参数,过程比较简单,这里重点描述一下相关的参数设置。

方法:OutPut(hdc, Dpi, pixelBounds, VisibleBounds, TrackCancel )

1、这里hdc是输出设备,由pExport.StartExporting指定;

2、Dpi是输出图片的精度,但是这里这个resolution并不能改变图片的精度,无论设置多大的dpi,输出同一范围图片的大小、精度都是一样的。要想改变精度,得指定IOutputRasterSettings::ResampleRatio这个参数,可以设置1—5个级别的采样率,在输出图片很大的时候这个参数能提高图片的质量;

3、PixelBounds设置的是输出像素所占的范围;

4、VisibleBounds指定地图可视的范围,这个范围是以地图坐标为单位的,以当前MapExtent为基准来控制放大、缩小视图;

5、还有个参数是pExpotrt.PixelBounds,定义的是输出图片的大小,即图片尺寸,相当于画布大小。当输出像素的范围大于图片大小的时候就会裁切图片,只输出部分地图;当它小于图片尺寸时地图会缩小到画布的一角。

综上所述,VisibleBounds或者像素范围和图片大小都可以设置地图的输出范围,一般按照具体的需要采用其中一种就可以了。

最后一点说明一下,DeviceFrame是当前设备范围,在ArcMap中就是地图所在的客户区,以左上角为起点(0,0);ExportFrame和DeviceFrame差不多,只是可能比前者略小一点;Map Extent一般是指地图范围,采用的是地图单位。整个AO体系里面有很多不同的Extent范围,弄清它们之间的关系对开发人员来说是很必要的。


本篇文章来源于 GIS空间站  网址:http://www.gissky.net/Article/1315.htm




[本日志由 独木舟 于 2009-02-22 08:34 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: GIS
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.