“渲染”就是SVG文本被解释后,在屏蔽上或其他地方被绘制的整个过程,其各种规范构成了渲染模型。任何支持SVG的设备的渲染都必须符合这种规则。规则 的具体内容包括绘图规则、渲染顺序、组、元素类型、区域绘制、遮罩和透明度等。这虽然不是入门的内容,可却是SVG严密规范的一个不可缺少的组成部分。如 果读者现在看不明白也不要紧,在SVG中国其他的内容有专门的介绍,大家可以通过本站的搜索系统查找。
1 绘图模式、渲染顺序和组
SVG的各种对象在屏蔽上或其他设备上重叠绘制时,遵循绘图规则,具体来讲就是如果一个绘画区域正好覆盖了另一个区域,那么一般原先的区域会被部分或全部遮盖住,但SVG的编写者可以设置覆盖区域的透明度,这样最后的效果就受覆盖区域属性、被覆盖区域属性和透明度等因素的综合影响。这条规则论述起来绕口,实际上是符合常识的,根本不必记忆。渲染顺序是SVG中元素绘制到屏蔽上的顺序,它与SVG文档中各元素的定义顺序是一致的。先定义的元素先绘制,后定义的元素则绘制在先定义的元素上面,效果由透明度设置。
SVG可以使用<g>标记来定义成组的元素。组内的元素在绘制时先被绘制到一个临时的虚拟画板上,然后在<g>标记的结束处一起绘制到屏蔽上去。绘制的规则和前面的绘图模式相似。
2 图像元素的类型
SVG支持以下3种基本的图像元素:矢量图形、文字和点阵图像。矢量图形是各种直线曲线色块的组合;文字是文本方式的字符;点阵图像则是一个矩形区域像素点颜色值的描述块,表现为一个二维数组。矢量图形和文亭子元素都能被填充(Fill)和描边(Stroke),前者填充一个封闭区域的内部,后者沿着图形的边缘描画。描边是以边缘为中心的,也就是说描边的效果一半在区域内,一半在区域外。这些操作是互相独立的,如果填充一个对象的同时将其描边,那么按照缺少的顺序是先填充后描边,于是绘制的图形所填充部分的边缘内则将会被描边的笔划所覆盖。另外填充和描边的操作都可以设置其透明度和模式,其内置的填充描边模式有3种:纯色填充、渐变填充(包括线性渐变和辐射状渐变)和模板图块填充。
点阵图像没有填充和描边的规定,它在被绘制时只是简单地把像素复制过来重新渲染一遍而已。
3 滤镜、剪裁、遮罩和透明度
SVG允许为任何绘图的操作加入滤镜效果,就像施加在已绘制好的图像上一样。效果由滤镜定义的区域、参数和施加对象来确定。
SVG还允许通过剪裁和遮罩的手段来限制绘制区域。剪截方式使用一个封闭的路径在输出设备上定义一个区域,只有落在此区域之内的绘图操作会被渲染,而落在区域之外的将忽略不计。
遮罩采用色彩的亮度或灰度来描述透明度,熟悉Photoshop等软件的读者一定对此不陌生。所谓遮罩,通俗讲就是近代控制图像哪些部分显示,哪些部分不显示的东西,它就像一个覆盖在图像上的平面罩子,透明的地方露出下边覆盖着的图像,不透明处什么也看不到,半透明处若陷若现。SVG中的透明度用0到1的数据来描述,0代表不透明,1代表全透明,0.5则是标准的“半透明”。事实上,剪裁区域也可以看作是由封闭路径所构成的遮罩,只是剪截没有半透明的过渡部分而已。
客户端的SVG解析器在工作时,如果遇到应用滤镜、剪截或遮罩等效果时,会先被将施加效果的图像对象绘制到一虚拟的画板上,目的是将其转换成二维点阵图以便于施加效果,但此时并未显示图像。等施加效果后,图像再被绘制到显示设备上,绘制时仍然遵循绘图规则,画板绘制时还会根据透明度度等参数影响其背景。常规的方法是,透明度不为0时,覆盖处的色彩值由背景处色彩和覆盖处色彩,通过透明度合成的办法计算而来。
(THE END)