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étodo | Forma |
|---|---|
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
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:
| Valor | Significado |
|---|---|
S | Trazo (solo contorno) — predeterminado |
F | Solo relleno |
DF o B | Dibujar y rellenar (ambos) |
Líneas y rectángulos
$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
$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
$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
$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:
$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
$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
$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).
$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:
$pdf->cropMark(20, 20, 10, 10)
->registrationMark(105, 10)
->colorRegistrationBar(20, 280, 170, 5);