Skip to content

Графика (HasDrawing)

Trait HasDrawing предоставляет примитивы векторного рисования для линий, прямоугольников, окружностей, многоугольников, кривых, стрелок и секторов. Все методы возвращают static, поэтому каждый вызов может быть объединён в цепочку.

Краткий справочник

МетодФигура
line()Прямая линия между двумя точками
rect()Прямоугольник
roundedRect()Прямоугольник со скруглёнными углами
circle()Окружность
ellipse()Эллипс
polygon()Произвольный многоугольник из массива точек
regularPolygon()Правильный многоугольник (n сторон)
starPolygon()Звезда
arrow()Стрелка с наконечником
pieSector()Круговой сектор для диаграмм
curve()Кубическая кривая Безье
polyCurve()Многосегментная кривая Безье

Базовый пример

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setDrawColor(255, 0, 0)
    ->setFillColor(200, 220, 255)
    ->line(10, 10, 100, 10)
    ->rect(10, 20, 80, 40, 'DF')
    ->roundedRect(10, 70, 80, 40, 5, 'DF')
    ->circle(150, 40, 30, 'DF')
    ->ellipse(150, 100, 40, 20, 'DF')
    ->arrow(10, 140, 100, 140)
    ->regularPolygon(150, 160, 25, 6, 'DF')
    ->starPolygon(50, 200, 25, 5, 3, 'DF');

Параметр стиля

Большинство методов рисования принимают строку $style, управляющую рендерингом:

ЗначениеЗначение
SОбводка (только контур) — по умолчанию
FТолько заливка
DF или BОбводка и заливка (оба)

Линии и прямоугольники

php
$pdf->line(float $x1, float $y1, float $x2, float $y2);
$pdf->rect(float $x, float $y, float $w, float $h, string $style = '');
$pdf->roundedRect(float $x, float $y, float $w, float $h, float $r, string $style = '');

line() рисует от точки (x1, y1) до (x2, y2). rect() рисует стандартный прямоугольник. roundedRect() добавляет скруглённые углы с радиусом $r.

Окружности и эллипсы

php
$pdf->circle(float $x0, float $y0, float $r, string $style = '');
$pdf->ellipse(float $x0, float $y0, float $rx, float $ry, string $style = '');

circle() принимает центральную точку и радиус. ellipse() использует раздельные горизонтальный и вертикальный радиусы.

Многоугольники

php
$pdf->polygon(array $points, string $style = '');
$pdf->regularPolygon(float $x0, float $y0, float $r, int $ns, string $style = '');
$pdf->starPolygon(float $x0, float $y0, float $r, int $nv, int $ng, string $style = '');

polygon() принимает плоский массив координат [x1, y1, x2, y2, ...]. regularPolygon() рисует правильный n-угольник, вписанный в окружность радиуса $r. starPolygon() рисует звезду с $nv вершинами и коэффициентом пропуска $ng.

Стрелки и круговые секторы

php
$pdf->arrow(float $x0, float $y0, float $x1, float $y1);
$pdf->pieSector(float $xc, float $yc, float $r, float $a, float $b, string $style = '');

arrow() рисует линию с наконечником стрелки в конечной точке. pieSector() рисует круговой сектор от угла $a до $b (в градусах), полезно для диаграмм:

php
$pdf->setFillColor(255, 100, 100)->pieSector(100, 100, 40, 0, 120, 'F')
    ->setFillColor(100, 255, 100)->pieSector(100, 100, 40, 120, 250, 'F')
    ->setFillColor(100, 100, 255)->pieSector(100, 100, 40, 250, 360, 'F');

Кривые Безье

php
$pdf->curve(float $x0, float $y0, float $x1, float $y1, float $x2, float $y2, float $x3, float $y3);
$pdf->polyCurve(array $points);

curve() рисует кубическую кривую Безье от (x0, y0) до (x3, y3) с контрольными точками (x1, y1) и (x2, y2). polyCurve() соединяет несколько сегментов Безье из массива точек.

Стили линий

php
$pdf->setLineStyle(array $style);

Массив $style поддерживает ключи: width (float), cap (butt, round, square), join (miter, round, bevel), dash (строка или массив паттерна) и color (массив RGB).

php
$pdf->setLineStyle([
    'width' => 0.5,
    'cap'   => 'round',
    'join'  => 'round',
    'dash'  => '3,2',
    'color' => [0, 0, 200],
])->line(10, 10, 190, 10);

Метки обрезки и приводки

Добавьте метки для профессионального печатного вывода:

php
$pdf->cropMark(20, 20, 10, 10)
    ->registrationMark(105, 10)
    ->colorRegistrationBar(20, 280, 170, 5);

Распространяется по лицензии LGPL-3.0-or-later.