(PHP 4, PHP 5, PHP 7, PHP 8)
imageline — Рисует отрезок
Функция рисует линию между двумя точками.
imageОбъект GdImage, который вернула функция imagecreatetruecolor() или другая функция генерации изображений.
x1Координата первой точки по оси x.
y1Координата первой точки по оси y.
x2Координата второй точки по оси x.
y2Координата второй точки по оси y.
colorЦвет линии. Идентификатор цвета, который добавила в палитру изображения функция imagecolorallocate().
Функция возвращает логическое значение true.
| Версия | Описание |
|---|---|
| 8.0.0 |
Параметр image теперь принимает объект GdImage;
раньше параметр принимал корректный gd-ресурс (resource).
|
Пример #1 Пример рисования жирной линии
<?php
function imagelinethick($image, $x1, $y1, $x2, $y2, $color, $thick = 1)
{
/* Способ хорошо работает только с ортогональными прямыми
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);
}