2,142
社区成员
发帖
与我相关
我的任务
分享
CDC *pdc=m_ctrlMapX.GetDC();
CDC dcmem;
dcmem.CreateCompatibleDC(pdc);
CBitmap bmp;
CBitmap* pOldBmp = NULL;
CRect rc;
GetClientRect(&rc);
bmp.CreateCompatibleBitmap(pdc,1280,1024);
pOldBmp=dcmem.SelectObject(&bmp);
dcmem.BitBlt(0,0,rc.Width(),rc.Height(),pdc,0,0,SRCCOPY);
//这里一般都是用单色清屏 而这里是先将原DC的内容贴到内存里面
//这样就将地图的内容最为了背景了
//------------------------------------------------------------------
//在这里绘图
//------------------------------------------------------------------
pdc->BitBlt(0,0,1280,1024,&dcmem,0,0,SRCCOPY);
dcmem.SelectObject(pOldBmp);
dcmem.DeleteDC();
bmp.DeleteObject();
m_ctrlMapX.ReleaseDC(pdc);
CMapXLayers layers;
layers = m_CtrMap.GetLayers();
layers.Add("CHINAHWY.TAB");
//------------------Add User DrawLayer------------------------------------------
CMapXLayer Mylayer;
Mylayer=layers.AddUserDrawLayer("MyLayer",1);
void CMetCenView::OnDrawUserLayerMap1(LPDISPATCH Layer, long hOutputDC, long hAttributeDC, LPDISPATCH RectFull, LPDISPATCH RectInvalid)
{
float x,y;
m_CtrMap.ConvertCoord(); //通过ConvertCoord将你要显示文字的经纬度转换成屏幕坐标
CDC* pdc = m_CtrMap.GetDC(); //取得控件的绘图DC,千万不要是View或者Dialog的DC
pdc->MoveTo();
pdc->LineTO();
pdc->TextOut(x,y,"sfsd"); //在屏幕位置上绘制文字
}