Skip to content

Gráficos (HasDrawing)

El trait HasDrawing proporciona primitivas de dibujo vectorial para líneas, rectángulos, círculos, polígonos, curvas, flechas y sectores circulares. Todos los métodos retornan static, por lo que cada llamada puede ser encadenada.

Referencia rápida

MétodoForma
line()Línea recta entre dos puntos
rect()Rectángulo
roundedRect()Rectángulo con esquinas redondeadas
circle()Círculo
ellipse()Elipse
polygon()Polígono arbitrario desde arreglo de puntos
regularPolygon()Polígono regular (n lados)
starPolygon()Forma de estrella
arrow()Flecha con punta
pieSector()Sector circular para gráficos
curve()Curva cúbica de Bezier
polyCurve()Curva de Bezier multi-segmento

Ejemplo 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

La mayoría de los métodos de dibujo aceptan una cadena $style que controla el renderizado:

ValorSignificado
STrazo (solo contorno) — predeterminado
FSolo relleno
DF o BDibujar y rellenar (ambos)

Líneas y rectá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() dibuja del punto (x1, y1) al (x2, y2). rect() dibuja un rectángulo estándar. roundedRect() agrega esquinas redondeadas con radio $r.

Círculos y 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() toma un punto central y un radio. ellipse() usa radios horizontal y 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() acepta un arreglo plano de coordenadas [x1, y1, x2, y2, ...]. regularPolygon() dibuja un polígono de n lados inscrito en un círculo de radio $r. starPolygon() dibuja una estrella con $nv vértices y factor de separación $ng.

Flechas y sectores circulares

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() dibuja una línea con una punta de flecha en el destino. pieSector() dibuja un sector circular del ángulo $a al $b (grados), ú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() dibuja una curva cúbica de Bezier desde (x0, y0) hasta (x3, y3) con puntos de control (x1, y1) y (x2, y2). polyCurve() encadena múltiples segmentos de Bezier desde un arreglo de puntos.

Estilos de línea

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

El arreglo $style soporta claves: width (float), cap (butt, round, square), join (miter, round, bevel), dash (cadena o patrón de arreglo), y color (arreglo 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 y registro

Agrega marcas listas para impresión profesional:

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

Distribuido bajo la licencia LGPL-3.0-or-later.