(PHP 4, PHP 5, PHP 7)
Draw a line
bool imageline ( resource $image, int $x1, int $y1, int $x2, int $y2, int $color )
Draws a line between the two given points.
Parameters:
image
An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().
x1
x-coordinate for first point.
y1
y-coordinate for first point.
x2
x-coordinate for second point.
y2
y-coordinate for second point.
color
The line color. A color identifier created with imagecolorallocate().
Returns:
Returns TRUE
on success or FALSE
on failure.
Examples:
Drawing a thick line
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php function imagelinethick( $image , $x1 , $y1 , $x2 , $y2 , $color , $thick = 1) { /* this way it works well only for orthogonal lines imagesetthickness($image, $thick); return imageline($image, $x1, $y1, $x2, $y2, $color); */ if ( $thick == 1) { return imageline( $image , $x1 , $y1 , $x2 , $y2 , $color ); } $t = $thick / 2 - 0.5; if ( $x1 == $x2 || $y1 == $y2 ) { return imagefilledrectangle( $image , round (min( $x1 , $x2 ) - $t ), round (min( $y1 , $y2 ) - $t ), round (max( $x1 , $x2 ) + $t ), round (max( $y1 , $y2 ) + $t ), $color ); } $k = ( $y2 - $y1 ) / ( $x2 - $x1 ); //y = kx + q $a = $t / sqrt(1 + pow( $k , 2)); $points = array ( round ( $x1 - (1+ $k )* $a ), round ( $y1 + (1- $k )* $a ), round ( $x1 - (1- $k )* $a ), round ( $y1 - (1+ $k )* $a ), round ( $x2 + (1+ $k )* $a ), round ( $y2 - (1- $k )* $a ), round ( $x2 + (1- $k )* $a ), round ( $y2 + (1+ $k )* $a ), ); imagefilledpolygon( $image , $points , 4, $color ); return imagepolygon( $image , $points , 4, $color ); } ?> |
See also:
Please login to continue.