CDML,也就是ChartDirector Mark Up Language,ChartDirector标记语言。有点像html啊。
CDML允许单行文本被多字体,不同颜色,甚至内嵌图片所渲染。
下文分成4部分:
- Font Styles
- Blocks and Lines
- Embedding Images
- Blocks Attributes
Font Styles (字体样式)
你可以用CDML标签来改变文本的样式,比如说下面这行代码:
<*font=timesi.ttf,size=16,color=FF0000*>Hello <*font=arial.ttf,size=12,color=008000*>world!
它将Hello world!这个文本渲染为:
一般来说,CDML的所有tags都是 用<*和*>来标识的。
在这对tags里的属性决定了tags后面同一个block里文本的样式。
由于<* 被当做tags标识来使用了。如果你在程序中出现它,要转义,方法为:<<*
下面这张图表显示了最常用的一些属性。
注意:没有单引号或者双引号。因为这个是python要使用的。
注意:使用逗号作为属性之间的分隔符,不能使用空格。
注意:font属性启动一个样式小节。你可以使用<*/font*>来结束这个小节(section),这样该小节里的各种属性只对该小节生效。
Blocks and Lines
在CDML里,一个文本字符串可能包含多个block(块).
一个block能使用换行符'\n'或者<*br*>,使这个block包含多行文本。
比如下面的代码:
<*size=15*><*block*><*color=FF*>BLOCK<*br*>ONE<*/*> and <*block*><*color=FF00*>BLOCK<*br*>TWO<*/*>
分析:以上的代码包括两个block,每个block包含两行文本。每个block用<*block*>标识开始,用<*/*>标识结束。
注意:当一个block被标识结束以后,字体样式会恢复到这个block之前的样子。
Embedding Images
CDML支持在文本中嵌入图片。一般格式为:<*img=my_image_file.png*>
my_image_file.png就是指定了嵌入图片的路径。
例如代码:<*size=20*>A <*img=sun.png*> day
渲染效果为:
注意:图片的扩展名只支持:jpg、jpeg、gif、png、wbmp、wmp.
Blocks Attributes
CDML支持嵌套的block.也就是说一个block可以包含另一个子block。block有属性用来控制子block的对齐方式和方向。
比如下面的代码:
<*block,valign=absmiddle*><*img=molecule.png*> <*block*>Hydrazino\nMolecule<*/*><*/*>
分析:<*block,valign=absmiddle*>使得各部分内容在垂直方向上按照absmiddle方式对齐。这个block包含一个图片(被当做一个block),一个空白字符,一个带有两行文本的block。
block 标签支持的属性有如下这些:
width、height、maxwidth、truncate、linespacing、bgColor、valign、halign、angle
主要用得多的是valign:表示子block的垂直对齐方式。对齐方式有baseline、top、bottom、middle和absmiddle。比如top:假设A是一个block,B是它的子block。那么top表示B的top line要和A的top line对齐。