Skip to content

Gráficos (HasDrawing)

O trait HasDrawing fornece primitivas de desenho vetorial para linhas, retângulos, círculos, polígonos, curvas, setas e setores de pizza. Todos os métodos retornam static, então cada chamada pode ser encadeada.

Referência Rápida

MétodoForma
line()Linha reta entre dois pontos
rect()Retângulo
roundedRect()Retângulo com cantos arredondados
circle()Círculo
ellipse()Elipse
polygon()Polígono arbitrário a partir de array de pontos
regularPolygon()Polígono regular (n lados)
starPolygon()Forma de estrela
arrow()Seta com cabeça
pieSector()Setor de pizza para gráficos
curve()Curva de Bezier cúbica
polyCurve()Curva de Bezier multi-segmento

Exemplo Básico

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');

Parâmetro de Estilo

A maioria dos métodos de desenho aceita uma string $style que controla a renderização:

ValorSignificado
STraço (apenas contorno) — padrão
FApenas preenchimento
DF ou BDesenhar e preencher (ambos)

Linhas e Retângulos

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() desenha do ponto (x1, y1) ao (x2, y2). rect() desenha um retângulo padrão. roundedRect() adiciona cantos arredondados com raio $r.

Círculos e Elipses

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

circle() recebe um ponto central e raio. ellipse() usa raios horizontal e vertical separados.

Polígonos

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() aceita um array plano de coordenadas [x1, y1, x2, y2, ...]. regularPolygon() desenha um polígono de n lados inscrito em um círculo de raio $r. starPolygon() desenha uma estrela com $nv vértices e fator de lacuna $ng.

Setas e Setores de Pizza

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() desenha uma linha com ponta de seta no destino. pieSector() desenha um setor de pizza do ângulo $a ao $b (graus), útil para gráficos:

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');

Curvas de Bezier

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

curve() desenha uma curva de Bezier cúbica de (x0, y0) a (x3, y3) com pontos de controle (x1, y1) e (x2, y2). polyCurve() encadeia múltiplos segmentos de Bezier de um array de pontos.

Estilos de Linha

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

O array $style suporta as chaves: width (float), cap (butt, round, square), join (miter, round, bevel), dash (string ou padrão de array) e color (array RGB).

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

Marcas de Corte e Registro

Adicione marcas prontas para impressão profissional:

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

Distribuído sob a licença LGPL-3.0-or-later.