NewRGBFreeFormTriangleMesh

着色、图形

说明

创建自由形式 Gouraud 着色三角形网格(PDF 着色类型 4),并以 DeviceRGB 颜色在 ShaderName 下注册。顶点以每组三个的方式使用,每组描述一个其角点颜色在表面上插值的三角形。每个三角形都会带起始顶点标记独立输出,因此三角形之间无需共享边

语法

Delphi

Function TPDFlib.NewRGBFreeFormTriangleMesh(Const ShaderName: WideString;
  Const Vertices: Array Of TPLMeshVertex; BitsPerCoordinate,
  BitsPerComponent: Integer;
  Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;

参数

ShaderName着色器注册时使用的名称;将其传给 SetFillShader 或 SetLineShader 可使用该网格绘制
VerticesTPLMeshVertex 记录数组 (X, Y, R, G, B),颜色分量范围为 0 至 1;长度必须至少为 3 且为 3 的倍数
BitsPerCoordinate顶点坐标的量化位数,介于 1 和 32 之间
BitsPerComponent每个颜色分量的量化位数,介于 1 和 16 之间
BoundsX0, BoundsY0, BoundsX1, BoundsY1将打包顶点坐标映射到着色坐标空间的解码矩形

返回值

0未创建网格,因为未选择文档、提供的完整三角形不足一个或某个 bits 参数超出范围
1网格已在 ShaderName 下注册

备注

坐标遵循库的左上角原点系统,并在内部转换 (ISO 32000-1 §8.7.4.5.5)。有关不含顶点数据的渐变着色,请参阅 NewRGBAxialShader

示例

SetLength(Vertices, 3);
Vertices[0].X:= 100; Vertices[0].Y:= 100;
Vertices[0].R:= 1; Vertices[0].G:= 0; Vertices[0].B:= 0;
Vertices[1].X:= 400; Vertices[1].Y:= 100;
Vertices[1].R:= 0; Vertices[1].G:= 1; Vertices[1].B:= 0;
Vertices[2].X:= 250; Vertices[2].Y:= 350;
Vertices[2].R:= 0; Vertices[2].G:= 0; Vertices[2].B:= 1;
PDF.NewRGBFreeFormTriangleMesh('tri', Vertices, 16, 8,
  100, 100, 400, 350);
PDF.SetFillShader('tri');