(PHP 4, PHP 5, PHP 7)
imageline — Dessine une ligne
$image
, int $x1
, int $y1
, int $x2
, int $y2
, int $color
)Dessine 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 identifiant de couleur créé par la fonction 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);
}
?>