note 90232 added to function.imagickdraw-pathlinetorelative

From: Date: Sat, 11 Apr 2009 12:20:15 +0000
Subject: note 90232 added to function.imagickdraw-pathlinetorelative
Groups: php.notes 
Request: Send a blank email to php-notes+get-153079@lists.php.net to get a copy of this message
Hope this of help of anything, I had one hell of a time to draw a simple pie slice, where in GD2 is very easily done with the 'arc' function.. this is a bit harder to do in imagick. The degrees are a mess, seems like the path, arc and ellipse functions all use a different system.. utterly confusing. Code below should at least be of help in understanding how it works. For an example of the output, please see: http://www.imagebam.com/image/8e0ca432393602 <?php function getPointOnCircumference( $widthOfCircle, $heightOfCircle, $degrees, $x = 0, $y = 0 ) { return array( 'x' => $x + ($widthOfCircle/2) * sin( deg2rad( $degrees ) ), 'y' => $y + ($heightOfCircle/2) * cos( deg2rad( $degrees ) ) ); } $width = 200; $height = 200; $border = 2; $x = $width / 2; $y = $height / 2; $im = new Imagick(); $im->newImage( $width, $height, "orange", "png" ); $draw = new ImagickDraw(); $draw->setFillColor( 'lime' ); $draw->setStrokeColor( new ImagickPixel( 'black' ) ); $draw->setStrokeWidth( 2 ); $draw->arc( 0, 0, ($width-$border), ($height-$border), 270, 360 ); //270 till 360 degrees $im->DrawImage( $draw ); $draw2 = new ImagickDraw(); $draw2->setFillColor( 'red' ); $draw2->setStrokeColor( new ImagickPixel( 'black' ) ); $draw2->setStrokeWidth( 2 ); $draw2->ellipse( 100, 100, $x-$border, $y-$border, 0, 90 ); //0 till 90 degrees $im->DrawImage( $draw2 ); $draw3 = new ImagickDraw(); $draw3->setFillColor( 'navy' ); $draw3->setStrokeColor( new ImagickPixel( 'white' ) ); $draw3->setStrokeWidth( 2 ); $draw3->pathStart(); $degrees90 = getPointOnCircumference( $width-2*$border,$height-2*$border, 360 ); $degrees180 = getPointOnCircumference( $width-2*$border,$height-2*$border, 270 ); $draw3->pathMoveToRelative( $x, $y ); //Move 'pencil' to middle of image. $draw3->pathLineToRelative( $degrees90['x'], $degrees90['y'] ); $draw3->pathEllipticArcRelative( $width-$border, $height-$border, 0, false, true, $degrees180['x'], $degrees180['y']-$y+$border ); $draw3->pathClose(); $im->DrawImage( $draw3 ); header( "Content-Type: image/png" ); echo $im; ?> ---- Server IP: 83.137.20.135 Probable Submitter: 77.248.3.182 ---- Manual Page -- http://www.php.net/manual/en/function.imagickdraw-pathlinetorelative.php Edit -- https://master.php.net/note/edit/90232 Del: integrated -- https://master.php.net/note/delete/90232/integrated Del: useless -- https://master.php.net/note/delete/90232/useless Del: bad code -- https://master.php.net/note/delete/90232/bad+code Del: spam -- https://master.php.net/note/delete/90232/spam Del: non-english -- https://master.php.net/note/delete/90232/non-english Del: in docs -- https://master.php.net/note/delete/90232/in+docs Del: other reasons-- https://master.php.net/note/delete/90232 Reject -- https://master.php.net/note/reject/90232 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#153079) next »