SelectByShape实现矩形选择要素
利用SelectByShape方法,实现矩形选择要素,并闪烁、定位。
代码:
代码放置于MapControl.MouseDown下即可实现 。
代码中是将所有Feature.Extent赋给Envelope实现,还可以调用Envelope.Expand来扩大视图范围,从而可以看到选中要素周边。
此外定位实现方法还可以在选中要素后,调用AE里的controlszoomtoselectedfeature来实现定位。
代码:
//selectbyshape方法
IMap pMap = new MapClass();
pMap = axMapControl1.Map;
IPoint pPt = new PointClass(); ;
pPt.PutCoords(e.mapX, e.mapY);
IEnvelope pEn = new EnvelopeClass();
pEn = axMapControl1.TrackRectangle();
pMap.SelectByShape(pEn, null, false);//最后一个参数控制是否只选一个
axMapControl1.Refresh();
IEnumFeature pEnumFeature = pMap.FeatureSelection as IEnumFeature;
IFeature pFeature;
pFeature = pEnumFeature.Next();
//选中闪烁,并视图定位
while (pFeature != null)
{
Application.DoEvents();
pEn.Union(pFeature.Extent);
axMapControl1.FlashShape(pFeature.Shape, 3, 500, null);
pFeature = pEnumFeature.Next();
}
axMapControl1.ActiveView.Extent = pEn;
IMap pMap = new MapClass();
pMap = axMapControl1.Map;
IPoint pPt = new PointClass(); ;
pPt.PutCoords(e.mapX, e.mapY);
IEnvelope pEn = new EnvelopeClass();
pEn = axMapControl1.TrackRectangle();
pMap.SelectByShape(pEn, null, false);//最后一个参数控制是否只选一个
axMapControl1.Refresh();
IEnumFeature pEnumFeature = pMap.FeatureSelection as IEnumFeature;
IFeature pFeature;
pFeature = pEnumFeature.Next();
//选中闪烁,并视图定位
while (pFeature != null)
{
Application.DoEvents();
pEn.Union(pFeature.Extent);
axMapControl1.FlashShape(pFeature.Shape, 3, 500, null);
pFeature = pEnumFeature.Next();
}
axMapControl1.ActiveView.Extent = pEn;
代码放置于MapControl.MouseDown下即可实现 。
代码中是将所有Feature.Extent赋给Envelope实现,还可以调用Envelope.Expand来扩大视图范围,从而可以看到选中要素周边。
此外定位实现方法还可以在选中要素后,调用AE里的controlszoomtoselectedfeature来实现定位。