我们在用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给我们提供了很多种将地图输出的方式,包括文件方式和打印等,这些方式又受不同参数的控制有着不同的效果。要想得到符合我们要求的效果,就必须了解这些方法所表达的意思和参数的内容,下面简要说明一下,其它的可以参考开发文档。
Tags: GIS
幻の小屋
|
软件&技术
|