文字

ImagickDraw::arc

(PECL imagick 2.0.0)

ImagickDraw::arcDraws an arc

说明

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

本函数还未编写文档,仅有参数列表。

Draws an arc falling within a specified bounding rectangle on the image.

参数

sx

Starting x ordinate of bounding rectangle

sy

starting y ordinate of bounding rectangle

ex

ending x ordinate of bounding rectangle

ey

ending y ordinate of bounding rectangle

sd

starting degrees of rotation

ed

ending degrees of rotation

返回值

没有返回值。

范例

Example #1 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 ();
}

?>

用户评论:

[#1] skmanji at manji dot org [2011-06-24 06:30:06]

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(600600'grey');

image_pie($canvas300300200045'red');
image_pie($canvas30030020045125'green');
image_pie($canvas300300200125225'blue');
image_pie($canvas300300200225300'cyan');
image_pie($canvas300300200300360'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);
}

?>

上一篇: 下一篇: