NewRGBFreeFormTriangleMesh
Заливка, Графика
Описание
Создаёт свободную треугольную сетку с затенением Гуро, тип затенения PDF 4, и регистрирует её под именем ShaderName в цвете DeviceRGB. Вершины потребляются группами по три, каждая группа описывает один треугольник, угловые цвета которого интерполируются по его поверхности. Каждый треугольник выводится независимо с флагом начальной вершины, поэтому совместное использование рёбер между треугольниками не требуется
Синтаксис
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');