我在一个图层中用createcirclereginon 或createellipticalregion函数可以画个圆形,我不想覆盖下面的图层,就显示一个空心圆,能实现么?

解决方案 »

  1.   

    我用下面的代码画出来你所说的效果了,其实主要是对MapX的Feature设置Style的问题。CMapXFeatureFactory stFt=nwMap->GetFeatureFactory();  //CMapX *nwMap;控件指针
    CMapXRectangle rtXr;                      //建立一个矩形
    rtXr.CreateDispatch( rtXr.GetClsid() );
    rtXr.Set( nwSta.mpCn.X-1,nwSta.mpCn.Y-1,nwSta.mpCn.X+1,nwSta.mpCn.Y+1 );
    //这里注意要创建一个椭圆,一般没有问题,但是要是创建一个圆形,需要对经纬度进行换算。
    //估计用createcirclereginon创建圆形比较好,没有试

    CMapXStyle styl;                          //建立样式
    styl.CreateDispatch( styl.GetClsid() );
    styl.SetRegionPattern( miPatternNoFill ); //不填充,只有设置这个椭圆的背景才是透明的
    //styl.SetRegionTransparent(TRUE);        //如果设置Transparent,背景将是白色,不知道为什么。

    CMapXFeature srfm;                        //初始一个Feature
    srfm.CreateDispatch( srfm.GetClsid() );
    srfm.Attach( nwMap->GetDispatch(FALSE) );srfm= stFt.CreateEllipticalRegion( rtXr, styl );  //通过FeatueFatory创建Feature

    staLr.AddFeature( srfm );         //添加进图层staLr是下面的代码创建的:
    CMapXLayer staLr;
    staLr =allLr.CreateLayer(stLrNa,NULL, 2, 32);