NewRGBLatticeTriangleMesh
着色、图形
说明
创建格栅形式的 Gouraud 着色三角形网格(PDF 着色类型 5),并以 DeviceRGB 颜色在 ShaderName 下注册。顶点按行输出,每行含 VerticesPerRow 个条目;格栅由符合规范的阅读器三角化,且顶点流不包含边标记
语法
Delphi
Function TPDFlib.NewRGBLatticeTriangleMesh(Const ShaderName: WideString;
Const Vertices: Array Of TPLMeshVertex; VerticesPerRow: Integer;
BitsPerCoordinate, BitsPerComponent: Integer;
Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;参数
| ShaderName | 着色器注册时使用的名称;将其传给 SetFillShader 或 SetLineShader 可使用该网格绘制 |
|---|---|
| Vertices | TPLMeshVertex 记录数组 (X, Y, R, G, B),颜色分量范围为 0 至 1,按行排列;长度必须是 VerticesPerRow 的准确倍数且至少包含两行 |
| VerticesPerRow | 每个格栅行的顶点数,至少为 2 |
| BitsPerCoordinate | 顶点坐标的量化位数,介于 1 和 32 之间 |
| BitsPerComponent | 每个颜色分量的量化位数,介于 1 和 16 之间 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | 将打包顶点坐标映射到着色坐标空间的解码矩形 |
返回值
| 0 | 未创建网格,因为未选择文档、VerticesPerRow 小于 2、顶点数不是 VerticesPerRow 的倍数或不足两行,或者某个 bits 参数超出范围 |
|---|---|
| 1 | 网格已在 ShaderName 下注册 |
备注
坐标遵循库的左上角原点系统,并在内部转换 (ISO 32000-1 §8.7.4.5.6)。对于网格对齐的颜色区域,格栅比 NewRGBFreeFormTriangleMesh 需要更少的顶点,因为共享顶点只需声明一次
示例
// 3 columns x 2 rows of color samples
SetLength(Vertices, 6);
for I:= 0 to High(Vertices) do
Begin
Vertices[I].X:= 100+ (I mod 3)* 150;
Vertices[I].Y:= 100+ (I div 3)* 150;
Vertices[I].R:= I/ 5; Vertices[I].G:= 0.5; Vertices[I].B:= 1- I/ 5;
End;
PDF.NewRGBLatticeTriangleMesh('grid', Vertices, 3, 16, 8,
100, 100, 400, 250);
PDF.SetFillShader('grid');