pqy_20一风
路人甲
路人甲
  • 注册日期2004-08-05
  • 发帖数52
  • QQ
  • 铜币418枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1275回复:0

怎样使多层要素改变颜色?

楼主#
更多 发布于:2006-06-15 22:16
<P>  目标: 通过点击功能按钮,实现点,线,面等多层要素变成同一颜色(不需保存)</P>
<P>  Dim pMap As IMap<br>  Dim pMxDoc As IMxDocument<br>  Set pMxDoc = ThisDocument<br>  Set pMap = pMxDoc.FocusMap<br>  <br>  Dim pRgbColor As IRgbColor<br>  Set pRgbColor = New RgbColor<br>  pRgbColor.Blue = 204<br>  pRgbColor.Green = 204<br>  pRgbColor.Red = 204</P>
<P>  'MsgBox pMap.LayerCount<br>  Dim i As Long<br>  Dim boltype As Integer<br>  Dim pfeaturelayer As IFeatureLayer<br>  Dim pfeatureclass As IFeatureClass</P>
<P>  Dim pGeoFeatureLayer As IGeoFeatureLayer<br>  Dim pSimpleRenderer As ISimpleRenderer<br>  Set pSimpleRenderer = New SimpleRenderer</P>
<P>  For i = 0 To pMap.LayerCount - 1<br>    Set pfeaturelayer = pMap.Layer(i)<br>    MsgBox pfeaturelayer.Name<br>    Set pfeatureclass = pfeaturelayer.FeatureClass<br>    Set pGeoFeatureLayer = pfeaturelayer<br>    Set pSimpleRenderer.Symbol = Nothing<br>    If pfeatureclass.ShapeType = esriGeometryPoint Then<br>        boltype = 1<br>        Dim pMarkerSymbol As ISimpleMarkerSymbol<br>        Set pMarkerSymbol = New SimpleMarkerSymbol<br>        pMarkerSymbol.Color = pRgbColor<br>        pMarkerSymbol.size = 4<br>        Set pSimpleRenderer.Symbol = pMarkerSymbol<br>        Set pGeoFeatureLayer.Renderer = pSimpleRenderer</P>
<P>    ElseIf pfeatureclass.ShapeType = esriGeometryPolyline Then<br>        boltype = 2<br>        Dim pLineSymbol As ISimpleLineSymbol<br>        Set pLineSymbol = New SimpleLineSymbol<br>        pLineSymbol.Color = pRgbColor<br>        Set pSimpleRenderer.Symbol = pLineSymbol<br>        Set pGeoFeatureLayer.Renderer = pSimpleRenderer</P>
<P>    ElseIf pfeatureclass.ShapeType = esriGeometryPolygon Then<br>        boltype = 3<br>        Dim pFillSymbol As ISimpleFillSymbol<br>        Set pFillSymbol = New SimpleFillSymbol<br>        pFillSymbol.Color = pRgbColor<br>        Set pSimpleRenderer.Symbol = pFillSymbol<br>        Set pGeoFeatureLayer.Renderer = pSimpleRenderer</P>
<P>  End If<br>  Next i</P>
<P>  pMxDoc.ActiveView.ContentsChanged  '刷新TOC<br>  pMxDoc.UpdateContents<br>  pMxDoc.ActiveView.Refresh</P>
<P>目前以上代码能实现变成同一颜色,但是会出现如下问题:</P>
<P>   改变前</P>
<P><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" extrusionok="f" connecttype="rect"></v:path><LOCK aspectratio="t" v:ext="edit"></LOCK></v:shapetype></P>
<P><IMG src="http://img456.photo.163.com/pqy_20/1859591/1426156275.jpg" border=0></P>
<P>  </P>
<P>  改变后</P>
<P><IMG src="http://img456.photo.163.com/pqy_20/1859591/1426156635.jpg" border=0></P>
<P>  </P>
<P>  改变后点层和线层消失,只有面层达到效果.同时,左边内容目录也出现错误.  这是什么原因引起的,应怎样修改? 还请高手帮忙!!!</P>
[此贴子已经被作者于2006-6-15 22:19:02编辑过]
喜欢0 评分0
游客

返回顶部