阅读:1178回复:0
[求助]如何给一个图层中的不同区域显示不同的颜色(样式)?
如何在同一图层中让不同区域自定义不同的显示颜色(样式)?
<br> <P>具体实现要求是:我现在选择一个区域,让这个图层上的相邻的几个区域按自定义的颜色显示,有点象专题图的显示方式。</P> <P>我是用Delphi + MapX的,希望大家给点思路或代码(什么语言都可以)参考一下。</P> <P>我现在已经把每个区域的 ftr(ftr:CMapxFeature)都已经找出来了,主要的问题是怎么改变每个区域的ftr的style,我现在的代码如下:</P> <P>procedure TMapForm.Map1DblClick(Sender: TObject);<BR>var<BR> sCityuName,citySql : String;<BR> i: Integer;<BR> ds: MapXLib_TLB.Dataset;<BR> lyr,lyrTrouble:CMapxLayer;<BR> ftrs: CMapXFeatures;<BR> ftr:CMapxFeature;<BR> flds:CMapxFields;<BR> rvs:CMapXRowvalues;</P> <P> fFtrFactory:CMapxFeatureFactory;<BR> style:CMapxStyle;<BR> lyrInfCMapXLayerInfo;</P> <P> adoNrel:TadoDataset;<BR>begin<BR> if mapobj.FindLayer('CityRegion') then<BR> begin</P> <P> lyr := mapobj.Map.Layers.Item['CityRegion'];<BR> lyr.OverrideStyle := false;<BR> <BR> if lyr.Selection.Count > 0 then<BR> begin<BR> try</P> <P> .<BR> .<BR> .<BR> adoNrel:=dm.GetDataSet(citySql);</P> <P> while not adoNrel.Eof do<BR> begin<BR> style:=CoStyle.Create;<BR> fFtrFactory := mapobj.Map.FeatureFactory;</P> <P> sCityuName := adoNrel.Fieldbyname('cityName').AsString;</P> <P> ftrs := lyr.Search('CityRegion_name="'+Trim(sCityuName)+'"',EmptyParam);</P> <P> if ftrs.Count>0 then<BR> begin</P> <P> ftr := ftrs.Item[1];<BR> //ftr.Style.RegionColor := miColorRed;<BR> //ftr.Style.RegionBackColor :=miColorRed;<BR> //ftr.Style.RegionBorderColor := miColorBlue;</P> <P><BR> //我怎么在这里改变每一个ftr的样式呢?</P> <P> //mapObj.map.Layers.Item['CityRegion'].AddFeature(ftr,EmptyParam);<BR> <BR> //ftr.Update(EmptyParam,EmptyParam);<BR> //mapObj.map.Layers.Item['CityRegion'].Selection.ClearSelection;<BR> //如果采用下面这句,相邻的区域就会高亮,可它们的颜色是一样的,我想用不同的颜色表式各个区域呀!<BR> //mapObj.map.Layers.Item['CityRegion'].Selection.add(ftrs);<BR> end;</P> <P> adoNrel.Next;<BR> end;</P> <P> finally<BR> adoNrel.free;<BR> end;<BR> end;<BR> end;<BR>end;</P> |
|