天天看点

使用c#开发mapserver之六styleObj

styleObj用于设置图层的符号。它在classObj中定义,一般于symbolObj一起使用。通过设置styleObj,可以产生千变万化,丰富多彩的地图。

一个简单的styleObj示例:

CLASS

NAME "Primary Roads"

STYLE

SYMBOL "circle"

COLOR 178 114 1

SIZE 15

END #style1

STYLE

SYMBOL "circle"

COLOR 254 161 0

SIZE 7

END #style2

END

从以上示例可以看出,在CLASS对象中包含了两个STYLE对象,每个STYLE对象代表了一个符号,两个STYLE对象叠加可以产生一个复合符号:具有两种颜色的道路线。

效果如下图,STYLE一宽度为15像素,位于底层,STYLE二宽度7像素,位于上层,形成一条复合线:

使用c#开发mapserver之六styleObj

通过多个style叠加的方式,可以实现多种复杂的符号效果。

在csharp_mapscript中可以方便的修改图层的符号以及动态生成符号,如下有几段示例常用代码:

//创建一个styleObj对象

styleObj pStyle = new styleObj(null);

//在class对象中创建一个styleObj对象

styleObj pStyle = new styleObj(pLayerObj.getClass(0));

//从class对象中获取一个styleObj对象

styleObj pStyle = m_ pLayerObj.getClass(0).getStyle(0);

通过以上的代码都可以获得一个style对象,通过修改style对象,可以设置各种参数来生成不同的地图符号,通常需要配合symbol对象使用。

styleObj pStyle = new styleObj(pClassObj);

//设置symbol对象

pStyle.setSymbolByName(pMapObj, “symbolname”);

//设置符号的颜色

pStyle.color = new colorObj(100, 100, 100, 0);

//设置符号的尺寸大小

pStyle.size = 8;

//设置符号的边线宽度,对点和线符号有效

pStyle.outlinewidth = 1;

//设置符号的边线颜色,对点和线符号有效

pStyle.outlinecolor = new colorObj(0, 0, 0, 0);