NewRGBTensorPatchMesh
漸層, 圖形
描述
建立張量積面片網格著色(PDF 著色類型 7),並以 DeviceRGB 色彩註冊在 ShaderName 之下。每個面片攜帶十六個控制點——四個面片角點、八個邊界控制點與四個內部控制點——依 P1..P16 順序排列,並在每個角點附加一個色彩。面片各自獨立輸出,不共用邊
語法
Delphi
Function TPDFlib.NewRGBTensorPatchMesh(Const ShaderName: WideString;
Const Patches: Array Of TPLMeshPatchCorners;
BitsPerCoordinate, BitsPerComponent: Integer;
Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;參數
| ShaderName | 著色器註冊的名稱;將它傳給 SetFillShader 或 SetLineShader 即可用此網格繪製 |
|---|---|
| Patches | TPLMeshPatchCorners 記錄陣列;PX/PY 於 0..15 槽位持有 P1..P16 的控制點座標,內部控制點 P13..P16 位於 12..15 槽位,而 CR/CG/CB 持有範圍 0 到 1 的四個角點色彩 |
| BitsPerCoordinate | 控制點座標的量化位元數,介於 1 與 32 之間 |
| BitsPerComponent | 每個色彩元件的量化位元數,介於 1 與 16 之間 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | 解碼矩形,將打包的控制點座標映射到著色座標空間 |
傳回值
| 0 | 網格未建立,原因為未選取文件、面片陣列為空,或位元參數超出範圍 |
|---|---|
| 1 | 網格已註冊在 ShaderName 之下 |
備註
座標採用函式庫的左上原點系統,並在內部轉換(ISO 32000-1 §8.7.4.5.8)。內部控制點對面片內部的色彩流向,提供了比 NewRGBCoonsPatchMesh 雙三次邊界曲線更精細的控制
範例
Patch:= Default(TPLMeshPatchCorners);
Patch.PX[0]:= 100; Patch.PY[0]:= 100; // P1 corner
Patch.PX[3]:= 300; Patch.PY[3]:= 100; // P4 corner
Patch.PX[6]:= 300; Patch.PY[6]:= 250; // P7 corner
Patch.PX[9]:= 100; Patch.PY[9]:= 250; // P10 corner
// Inner control points P13..P16 in slots 12..15
Patch.PX[12]:= 166; Patch.PY[12]:= 150;
Patch.PX[13]:= 233; Patch.PY[13]:= 150;
Patch.PX[14]:= 233; Patch.PY[14]:= 200;
Patch.PX[15]:= 166; Patch.PY[15]:= 200;
Patch.CR[0]:= 1; Patch.CG[0]:= 0; Patch.CB[0]:= 0;
Patch.CR[1]:= 0; Patch.CG[1]:= 0; Patch.CB[1]:= 1;
Patch.CR[2]:= 0; Patch.CG[2]:= 1; Patch.CB[2]:= 0;
Patch.CR[3]:= 1; Patch.CG[3]:= 1; Patch.CB[3]:= 0;
SetLength(Patches, 1);
Patches[0]:= Patch;
PDF.NewRGBTensorPatchMesh('tensor', Patches, 16, 8,
100, 100, 300, 250);
PDF.SetFillShader('tensor');