第7章MO的图层渲染图层的渲染是通过设置图层对象的Renderer属性,来对MapLayer图层采用不同的渲染方法。Renderer属性设置的语法为:Object.Renderer[=renderer]其中:Object:一般为图层对象,表达为Layer,Map1.Layers.Item(0)或Map1.Layers(0);Renderer:表示渲染方式的对象表达式,可以是ClassBreaksRenderer、DotDensityRenderer、LabelRenderer或ValueMapRenderer等。7.1标注渲染(LabelRenderer)标注渲染是通过对象LabelRenderer来实现的。LabelRenderer对象可以在图层上显示表示图形图元的属性文字。这些属性文字是从属性数据库(对于shape格式是dbf文件)的指定字段中读取的。用Field属性来指定来源字段,用symbol(TextSymbol格式)属性来设置显示方式,用SymbolCount说明采用的Symbol数量。在缺省方式下,LabelRenderer在一个图层内的每个图元的中心标注文字。可以通过以下的设置改变标注位置和方式。如果SymbolCount>1,就可以使用SymbolField属性了。使用SymbolField属性可以使一个图层上的图元有不同的渲染方式。还可以用DrawBackGround属性控制图元的重绘功能,用AllowDuplicates属性控制是否允许重复标注,用SplinedText属性控制是否沿着图元方向标注,用Plip属性控制在沿着图元方向标注是否需要翻转除了使用Field属性决定标注来源字段外,LabelRenderer还提供了几种设置方式来源字段的属性如用HeightField指定标注的高度的来源,用RotationField属性指定标注时旋转的角度的来源,用XoffsetField和YoffsetField属性设置标注时偏移数值的来源,还可以用FittedField属性决定一条直线来确定标注位置。最后,还可以设置LevelField属性值,利用MaxLevel和MinLevel属性,可以控制哪个比例尺的图元可以被标注。定义标注渲染的设置语句为:Setlayer.Renderer=newLabelRenderer‘设置标注渲染方式;Layer.Renderer.Field=”Name”‘指定要显示的字段;Layer.Renderer.Symbol(0).Color=moBlack‘设置Symbol;Layer.Renderer.Symbol(0).Font.Size=107.12标注偏移有时会遇到地图上的标注位置重复,可以使用XoffsetField和YoffsetField属性设置标注的偏移,以避免文字相互覆盖。XoffsetField定义为:Object.XOffsetField[=value]其中:Object:图层对象;Value:字符串,指定存放X方向的偏移值的字段,在属性数据库中。YoffsetField的定义类似。定义的方法为:DimoRendererasnewMapObjects2.LabelRendererMap1.Layers(0).Renderer=oRendereroRenderer.XoffsetField=”CITIES_”如果要在一个图层中使用标注偏移,可以在属性数据库中增加2个数值型字段,分别命名为Xoffset和Yoffset,用于存放偏移数值。下例对于墨西哥地图的”CITIES_”字段使用了XoffsetField。在Form上添加一个Map1、Command1和Command2,运行时单击Command2,就可以在图层上看见标注偏移的效果,单击Command1还原。DimdblAsBooleanPrivateSubcommand1_click()dbl=FalseMap1.Layers.ClearDrawLayerEndSubPrivateSubcommand2_click()dbl=TrueMap1.Layers.ClearDrawLayerEndSubPrivateSubDrawLayer()DimdcAsNewDataConnectionDimlayerAsMapLayerDimTrenderAsNewmapobjects2.LabelPlacerdc.Database=App.Path+"\..\"+"Mexico"IfNotdc.ConnectThenMsgBox"指定的文件夹下没找到图层数据文件!"EndEndIfSetlayer=NewMapLayerSetlayer.GeoDataset=dc.FindGeoDataset("states")layer.Symbol.Color=moOrangelayer.Symbol.Size=1layer.Symbol.Style=2layer.Symbol.OutlineColor=moBrownMap1.Layers.AddlayerSetlayer=NewMapLayerSetlayer.GeoDataset=dc.FindGeoDataset("cities")layer.Symbol.Color=moRedlayer.Symbol.Size=3layer.Symbol.Style=0Setlayer.Renderer=NewLabelRendererWithlayer.RendererIfdblThen.XOffsetField="Cities_"EndIf.Field="Name".Symbol(0).Color=moBlack.Symbol(0).Font.Size=8EndWithMap1.Layers.AddlayerMap1.RefreshEndSub由于cities.dbf的数据库是MO提供的,其中没有Xoffset和Yoffset字段用于存放标注偏移量,因此这个例子运行时,只是胡乱偏移,并不美观。实际应用中要仔细设置。下图是笔者做...