略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: ImagickDraw::pathLineToRelative

2024-12-22

ImagickDraw::pathLineToRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathLineToRelativeDraws a line path

说明

public ImagickDraw::pathLineToRelative(float $x, float $y): bool
警告

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

Draws a line path from the current point to the given coordinate using relative coordinates. The coordinate then becomes the new current point.

参数

x

starting x coordinate

y

starting y coordinate

返回值

没有返回值。

add a noteadd a note

User Contributed Notes 1 note

up
0
Axeia
13 years ago
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;
?>

官方地址:https://www.php.net/manual/en/imagickdraw.pathlinetorelative.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3