Для заливки сложной замкнутой области удобно использовать функциюimagefilledpolygon:
int imagefilledpolygon ( resource image, array points, int num_points, int color )
где,
image- идентификатор изображения;
points- массив точек;
num_points- количество точек в полигоне;
color- цвет заливки.
Массив точек содержит X и Y координату каждой точки. Таким образом, для трех точек, массив содержит шесть элементов: Array( X1, Y1, X2, Y2, X3, Y3)
Пример 29.Вывод самого простого полигона (треугольник):
<?php
header ("Content-type: image/png");
$im = imagecreatetruecolor(320, 240);
$ink = imagecolorallocate($im, 255, 255, 255);
imagefilledpolygon($im, Array(
100,100,
120,180,
210,160,
), 3, $ink);
imagepng($im);
imagedestroy($im);
?>
Эта функция удобна тем, что линии полигона могут пересекаться, и заливка при этом работает корректно: