ImagickDraw::arc

(PECL imagick 2, PECL imagick 3)

ImagickDraw::arcDessine un arc

Description

public ImagickDraw::arc(
    float $sx,
    float $sy,
    float $ex,
    float $ey,
    float $sd,
    float $ed
): bool
Avertissement

Cette fonction est actuellement non documentée ; seule la liste des arguments est disponible.

Dessine un arc, placé à l'intérieur d'un rectangle.

Liste de paramètres

sx

Abscisse du point de début d'arc dans le rectangle d'encadrement

sy

Ordonnée du point de début d'arc dans le rectangle d'encadrement

ex

Abscisse du point de fin d'arc dans le rectangle d'encadrement

ey

Ordonnée du point de fin d'arc dans le rectangle d'encadrement

sd

Degré de rotation initial

ed

Degré de rotation final

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Exemple avec ImagickDraw::arc()

<?php
function arc($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $startAngle, $endAngle) {

//Create a ImagickDraw object to draw into.
$draw = new \ImagickDraw();
$draw->setStrokeWidth(1);
$draw->setStrokeColor($strokeColor);
$draw->setFillColor($fillColor);
$draw->setStrokeWidth(2);

$draw->arc($startX, $startY, $endX, $endY, $startAngle, $endAngle);

//Create an image object which the draw commands can be rendered into
$image = new \Imagick();
$image->newImage(IMAGE_WIDTH, IMAGE_HEIGHT, $backgroundColor);
$image->setImageFormat("png");

//Render the draw commands in the ImagickDraw object
//into the image.
$image->drawImage($draw);

//Send the image to the browser
header("Content-Type: image/png");
echo
$image->getImageBlob();
}

?>

add a note add a note

User Contributed Notes 1 note

up
0
skmanji at manji dot org
13 years ago
You can do a pie chart with a combination of arc and polygon functions (there really ought to be a built-in command for this)

<?php
//  create a new canvas object and a white image
$canvas     = new Imagick();
$canvas->newImage(600, 600, 'grey');

image_pie($canvas, 300, 300, 200, 0, 45, 'red');
image_pie($canvas, 300, 300, 200, 45, 125, 'green');
image_pie($canvas, 300, 300, 200, 125, 225, 'blue');
image_pie($canvas, 300, 300, 200, 225, 300, 'cyan');
image_pie($canvas, 300, 300, 200, 300, 360, 'orange');

//  output the image
$canvas->setImageFormat('png');
header("Content-Type: image/png");
echo
$canvas;
exit;

// FUNCTIONS

function image_arc( &$canvas, $sx, $sy, $ex, $ey, $sd, $ed, $color = 'black' ) {

   
//  draw arc on canvas
    //  $sx, $sy, $ex, $ey specify a bounding rectangle of a circle with the origin in the middle
    //  $sd, and $ed specify start and end angles in degrees

   
$draw = new ImagickDraw();
   
$draw->setFillColor($color);
   
$draw->setStrokeColor($color);
   
$draw->setStrokeWidth(1);
   
$draw->arc($sx, $sy, $ex, $ey, $sd, $ed);
   
$canvas->drawImage($draw);
}

function
image_pie( &$canvas, $ox, $oy, $radius, $sd, $ed, $color = 'black' ) {

   
//  draw pie segment
    //  $ox, $oy specify the circle origin
    //  $sd, and $ed specify start and end angles in degrees
    //  degrees start from 0 = East, and go clockwise

    //  position 1 - convert degrees to radians and get first point on perimeter of circle
   
$x1     = $radius * cos($sd / 180 * 3.1416);
   
$y1     = $radius * sin($sd / 180 * 3.1416);

   
//  position 2 - convert degrees to radians and get second point on perimeter of circle
   
$x2     = $radius * cos($ed / 180 * 3.1416);
   
$y2     = $radius * sin($ed / 180 * 3.1416);

   
//  draw segment triangle - specify the 3 points and draw a polygon
   
$points = array(array('x' => $ox, 'y' => $oy), array('x' => $ox + $x1, 'y' => $oy + $y1), array('x' => $ox + $x2, 'y' => $oy + $y2));

   
image_polygon($canvas, $points, $color);

   
//  draw corrsesponding arc to complete the "pie" segment
   
image_arc($canvas, $ox - $radius, $oy - $radius, $ox + $radius, $oy + $radius, $sd, $ed, $color);
}

function
image_polygon( &$canvas, $points, $color = 'black' ) {

   
//  draw a polygon on canvas

   
$draw = new ImagickDraw();
   
$draw->setFillColor($color);
   
$draw->setStrokeColor($color);
   
$draw->setStrokeWidth(1);
   
$draw->polygon($points);
   
$canvas->drawImage($draw);
}

?>
To Top