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