(PECL cairo >= 0.1.0)
CairoContext::arc -- cairo_arc — Ajoute un arc circulaire
Style orienté objet (méthode) :
$x
, float $y
, float $radius
, float $angle1
, float $angle2
)Style procédural :
$context
, float $x
, float $y
, float $radius
, float $angle1
, float $angle2
)
Ajoute un arc circulaire d'un rayon donné au chemin courant.
L'arc est centré aux coordonnées x
, y
,
commence à l'angle angle1
et se forme en augmentant son angle
jusqu'à l'angle angle2
. Si l'angle angle2
est plus petit que l'angle angle1
, il sera augmenter
progressivement de 2*M_PI tant qu'il sera plus petit que l'angle angle1
.
S'il y a un point courant, un segment de ligne initial sera ajouté au chemin pour connecter
le point courant et le début de l'arc. Si cette ligne initiale n'est pas désirée,
elle peut être évitée en appelant la méthode CairoContext::newSubPath()
ou la fonction procédurale cairo_new_sub_path() avant d'appeler
CairoContext::arc() ou cairo_arc().
Les angles sont mesurés en radians. Un angle de 0.0 est dans la direction de l'axe X
positif (dans l'espace utilisateur). Un angle de M_PI/2.0 radians (90 degrés) est dans
la direction de l'axe Y positif (dans l'espace utilisateur). L'angle augment
depuis l'axe X positif jusqu'à l'axe Y positif. Aussi, avec la matrice de transformation
par défaut, les angles augmentent dans le sens des aiguilles d'une montre.
( Pour convertir les degrés en radians, utilisez la formule : degrés * (M_PI / 180.).)
Cette fonction fournit un arc dans la direction des angles croissants ; voir la méthode
CairoContext::arcNegative() ou la fonction cairo_arc_negative()
pour récupérer l'angle dans la direction des angles croissants.
context
Un objet CairoContext valide.
x
Position en X
y
Position en Y
radius
Rayon de l'arc
angle1
Angle de départ
angle2
Angle de fin
Aucune valeur n'est retournée.
Exemple #1 Style orienté objet
<?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');
?>
Exemple #2 Style procédural
<?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');
?>