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 | 網格未建立,原因為未選取文件、提供的完整三角形少於一個,或位元參數超出範圍 |
|---|---|
| 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');