(PHP 4, PHP 5, PHP 7)
imageline — Dessine une ligne
$image
, int $x1
, int $y1
, int $x2
, int $y2
, int $color
) : boolDessine une ligne entre deux points fournis.
image
Une ressource d'image, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().
x1
X : coordonnée du premier point.
y1
Y : coordonnée du premier point.
x2
X : coordonnée du second point.
y2
Y : coordonnée du second point.
color
La couleur de remplissage. Un identificateur de couleur créé avec imagecolorallocate().
Cette fonction retourne TRUE
en cas de succès ou FALSE
si une erreur survient.
Exemple #1 Trace 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);
}
?>