antonio
路人甲
路人甲
  • 注册日期2005-01-24
  • 发帖数3
  • QQ
  • 铜币124枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1068回复:0

[求助]如何给一个图层中的不同区域显示不同的颜色(样式)?

楼主#
更多 发布于:2005-07-15 17:02
如何在同一图层中让不同区域自定义不同的显示颜色(样式)?
<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>
喜欢0 评分0
游客

返回顶部