代码如下:
// x1, y1, x2, y2为在地图中选定的两个点坐标
// 分别作为要绘制矩形框的左下角和右上角两个点
x1
=
20741.798
;
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
x2
=
20739.798
;
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
y1
=
3401.866
;
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
y2
=
3409.866
;
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pt.Set(x1, y1);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pts.Add(pt);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pt.Set(x1, y2);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pts.Add(pt);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pt.Set(x2, y2);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pts.Add(pt);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pt.Set(x2, y1);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
pts.Add(pt);
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
sty
=
m_MapXFeature.GetStyle();
//
获取Style
lyr
=
m_ctrlMapX.GetLayers().Item(
"
TEMP1
"
);
//
获取要添加的图层
DrawRect(lyr, pts, sty);
//
调用DrawRect函数绘制矩形框
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//
DrawRect函数,绘制矩形框
void
DrawRect(CMapXLayer lyr, CMapXPoints pts, CMapXStyle sty)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
try
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
CMapXFeatureFactory fac;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
CMapXFeature ftr, ftr2;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
COleVariant vtPts, vtSty;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
fac = m_ctrlMapX.GetFeatureFactory();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Points Variant
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
vtPts.vt = VT_DISPATCH;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
vtPts.pdispVal = pts.m_lpDispatch;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
vtPts.pdispVal->AddRef();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Style Variant
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
vtSty.vt = VT_DISPATCH;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
vtSty.pdispVal = sty.m_lpDispatch;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
vtSty.pdispVal->AddRef();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ftr = fac.CreateRegion(vtPts, vtSty);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ftr2 = lyr.AddFeature(ftr);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ftr2.Update();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
lyr.Refresh();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} catch (COleDispatchException *e)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
e->ReportError();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
e->Delete();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} catch (COleException *e)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
e->ReportError();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
e->Delete();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}