程序集: SuperMap.Mapping (in SuperMap.Mapping)
版本: dll
语法
C# |
---|
public string LabelColorExpression { get; set; } |
备注
通过指定字段的方式控制标签的字体、文字大小、文字旋转角度、文字颜色、标签偏移量,只对点标签专题图有效。
注:如果字段值为无值,将按照当前标签专题图所设置的字体颜色的具体数值进行显示,如:ThemeLabel.UniformStyle.ForeColor属性值。
颜色值支持十六进制表达下为0xRRGGBB,即按照RGB排列。
该属性设置实现了标签专题图自定义功能,此外,还可以通过指定字段的方式控制标签的字体、文字旋转角度、字体大小、标签偏移量。如果标签的某些风格没有通过指定字段的方式设置,风格仍使用ThemeLabel.UniformStyle或者ThemeLabel.UniformMixedStyle对于风格的设置结果。
使用字段控制标签文本的风格,对于字段的类型或者字段值的内容有如下要求,您需要保证数据符合如下所述的字段要求才能获得正确的显示效果。
1. 字体名称(LabelFontTypeExpression):字段类型为可以存储文本信息的类型即可,如:文本型,字段值为字体名称,如:微软雅黑、宋体、黑体,对应记录中的标注文本将以指定的字体进行显示,如果指定的字体在系统中不存在,将按照专题图风格设置中的字体统一显示。字体名称(字段值)如何书写,就是桌面中文字风格中,“字体名称”后面的字体名称内容,如下图所示。
2. 文字大小(LabelSizeExpression):字段类型为数值类型,字段值为文字字高,数值单位为毫米。
3. 文字颜色(LabelColorExpression):字段类型为数值类型。颜色值在十六进制表达下为0xRRGGBB,即按照RGB排列。颜色值的获取:在颜色面板中选择需要的颜色,如下图所示,就是颜色的16进制值,将数值的后六位,粘贴到计算机的十六进制数值模式下,然后,再切换到十进制,这个值就可以写到属性表中了。
4. 文字旋转角度(LabelAngleExpression):字段类型为数值类型,字段值为字体的旋转角度,数值单位为度。角度旋转以逆时针方向为正方向,对应数值为正值;角度值支持负值,表示沿顺时针方向旋转。
5. 标签偏移(ExplodeXExpression、ExplodeYExpression):字段类型为数值类型,字段值表示偏移距离,单位为地理坐标或者逻辑坐标(0.1毫米),具体由如下图所示的“偏移量单位”的设置结果决定。标签偏移效果由偏移量(X、Y方向)以及文本对齐方式共同决定,偏移设置需要提供水平(X)、垂直(Y)偏移量。对于偏移可以使用地理坐标或者逻辑坐标。
6. 关于标签旋转角度和偏移,如果两者同时设置后,先对标签进行角度旋转,再进行偏移。
如下图所示,为本示例对于数据处理后的属性表结构和内容的截图,以及通过该数据控制点标签专题图显示风格的效果图。
示例
//1. 新建一个标签专题图对象,用于制作示例中的点标签专题图。 ThemeLabel themeLabel = new ThemeLabel(); //2. 设置用于标注的字段。 themeLabel.LabelExpression = "ZJNR"; //3. 设置标签文本的对齐方式为中心点对齐。 themeLabel. UniformStyle. Alignment= TextAlignment. MiddleCenter; //4. 指定一个字段,该字段值为字体名称用来控制标签文字的字体。 themeLabel.LabelFontTypeExpression = "Font"; //5. 指定一个字段,该字段值为字高,用来控制标签文字的大小。 themeLabel.LabelSizeExpression = "FontSize"; //6. 指定一个字段,该字段值为颜色值,用来控制标签文字的颜色。 themeLabel.LabelColorExpression = " FontColor"; //7. 指定一个字段,该字段值为旋转角度值,用来控制标签文字的旋转。 themeLabel.LabelAngleExpression = "FontAngle"; //8. 指定一个字段,该字段值为偏移距离,用来控制标签文字在水平方向的偏移量。 themeLabel.ExplodeXExpression = "OffsetX"; //9. 指定一个字段,该字段值为偏移距离,用来控制标签文字在垂直方向的偏移量。 themeLabel.ExplodeYExpression = "OffsetY"; //10. 将自定义标签专题图风格应用到示例中的点数据集,并添加到地图窗口中。 Layer layerTheme = mapControl.Map.Layers.Add(ptDataset, themeLabel, true);