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 可使用该网格绘制
VerticesTPLMeshVertex 记录数组 (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');