(PECL cairo >= 0.1.0)
CairoContext::arc -- cairo_arc — Añade un arco circular
Estilo orientado a objetos (método):
$x
, float $y
, float $radius
, float $angle1
, float $angle2
) : voidEstilo por procedimientos:
$context
, float $x
, float $y
, float $radius
, float $angle1
, float $angle2
) : void
Añade un arco circular del radio dado al trazado actual.
El arco está centrado en (x
, y
), comenzando en
angle1
y procediendo en ángulos incrementados hasta el final en
angle2
.
Si angle2
es menor que angle1
será
incrementado progresivamente por 2*M_PI hasta que sea mayor que angle1
.
Si hay un punto actual se añadirá un segmento de línea al trazado para conectar el
punto actual al inicio del arco. Si no se desea esta línea inicial,
se puede evitar llamando a CairoContext::newSubPath() o en estilo procedural
cairo_new_sub_path() antes de llamar a CairoContext::arc()
o a cairo_arc().
Los ángulos se miden en radianes. Un ángulo de 0.0 está en la dirección del eje X positivo
(en espacio de usuario). Un ángulo de M_PI/2.0 radianes (90 grados) está en la dirección del eje Y
positivo (en espacio de usuario). Los ángulos se incrementan en la dirección desde el eje X positivo hacia el
eje Y positivo. Así, con la matriz de transformación predeterminada, los ángulos se incrementan en el sentido de las agujas del reloj.
(Para convertir grados a radianes use grados * (M_PI / 180.).)
Esta función da el arco en la dirección de los ángulos incrementados; véase
CairoContext::arcNegative() o cairo_arc_negative()
para obtener el arco el la dirección de los ángulos decrementados.
context
Un objeto CairoContext válido
x
posición x
y
posición y
radius
Radio del arco
angle1
ángulo de inicio
angle2
ángulo final
No devuelve ningún valor.
Ejemplo #1 Estilo orientado a objetos
<?php
$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);
$c->setSourceRgb(0, 0, 0);
$c->paint();
$c->setLineWidth(1);
$c->setSourceRgb(1, 1, 1);
for ($r = 50; $r > 0; $r -= 10) {
$c->arc(50, 50, $r, 0, 2 * M_PI);
$c->stroke();
$c->fill();
}
$s->writeToPng(dirname(__FILE__) . '/CairoContext__arc.png');
?>
Ejemplo #2 Estilo por procedimientos
<?php
$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);
cairo_set_source_rgb($c, 0, 0, 0);
cairo_paint($c);
cairo_set_source_rgb($c, 1, 1, 1);
cairo_set_line_width($c, 1);
for ($r = 50; $r > 0; $r -= 10) {
cairo_arc($c, 50, 50, $r, 0, 2 * M_PI);
cairo_stroke($c);
cairo_fill($c);
}
cairo_surface_write_to_png($s, dirname(__FILE__) . '/cairo_arc.png');
?>