阅读:1275回复:0
怎样使多层要素改变颜色?
<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编辑过]
|
|