imageline

(PHP 3, PHP 4 , PHP 5)

imageline -- Dessine une ligne

Description

int imageline ( resource image, int x1, int y1, int x2, int y2, int color )

imageline() dessine une ligne depuis le point (x1,y1) jusqu'au point (x2,y2) (le coin supérieur gauche est l'origine (0,0)) dans l'image image et avec la couleur color.

Exemple 1. Tracer une ligne fine

<?php

function imagelinethick($image, $x1, $y1, $x2, $y2, $color, $thick = 1)
{
    
/* de cette manière, ca ne marche bien que pour les lignes orthogonales
    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);
}

?>

Voir aussi imagecreate() et imagecolorallocate().