阅读:2441回复:3
[原创]请教各位vc+ae中任意多边形选择要素的问题,附源码!
<P>我想用任意画的多边形选择图中元素,为什么运行之后什么都没有显示啊,或者说没有效果。请各位看看下面的代码有什么问题。非常感谢。</P>
<P>IActiveViewPtr ipActiveView; <BR> CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;<BR> m_ipMapCtrl->get_ActiveView(;ipActiveView);</P> <P><BR> IGeometryPtr ipGeom;<BR> IPolygon3Ptr ipPgon=NULL;<BR> ipPgon=m_mapCtrl.TrackPolygon();<BR> ipGeom=ipPgon;</P> <P> ISpatialFilterPtr ipSpatialFit(CLSID_SpatialFilter);<BR> ipSpatialFit->putref_Geometry(ipGeom);<BR> m_ipMap->SelectByShape(ipGeom,NULL,false);<BR> ipActiveView->Refresh();</P> |
|
1楼#
发布于:2008-10-12 17:52
<DIV>没有任何的高亮显示,而且为空,请问是什么问题啊,谢谢。</DIV>
|
|
2楼#
发布于:2008-10-12 18:06
<P>m_ipMap->SelectByShape(ipGeom,NULL,false);<BR>第二个参数 为 SelectionEnvironment 不能为NULL</P>
|
|
3楼#
发布于:2008-10-12 21:32
<P>多谢楼上老兄回复,这个问题已经解决,正确代码贡献出来。见下面的代码。</P>
<P>另外一个问题就是我选择的这些要素是处于多个图层里面的,我如何获得选中的所有要素的选择集,并且如何知道哪个要是是哪个图层里面的,以及如何获取到他们的属性信息并显示出来啊。请高人指点。谢谢。</P> <P>正确代码: </P> <P> IGeometryPtr ipGeom;<BR> //IPolygon3Ptr ipPgon=NULL;<BR> //ipPgon=m_mapCtrl.TrackPolygon();<BR> ipGeom=m_mapCtrl.TrackPolygon();//ipPgon;<BR> </P> <P> IMapPtr ipMap;<BR>// m_ipMapCtrl->get_Map(;ipMap);<BR> ipMap=m_mapCtrl.GetMap();<BR> ISpatialFilterPtr ipSpatialFit(CLSID_SpatialFilter);<BR> ipSpatialFit->putref_Geometry(ipGeom);<BR> ISelectionEnvironmentPtr ipSelEnvir(CLSID_SelectionEnvironment);<BR> ipMap->SelectByShape(ipGeom,ipSelEnvir,VARIANT_FALSE);<BR> IActiveViewPtr ipAV(ipMap);<BR> ipAV->Refresh();</P> |
|