Рисование линий, прямоугольников и многоугольников

Задача
Пусть требуется нарисовать линию, прямо- или многоугольник. Кроме того, надо иметь возможность управлять типом прямоугольника или многоугольника (закрашенный или незакрашенный). Например, если необходимо нарисовать гистограмму или создать диаграмму котировки акций.

Решение
Линию можно нарисовать посредством функции ImageLine():

ImageLine($image, $x1, $y1, $x2, $y2, $color);

Функция ImageRectangle() позволяет нарисовать незакрашенный прямоугольник:

ImageRectangle($image, $x1, $y1, $x2, $y2, $color);
А функция ImageFilledRectangle() – сплошной прямоугольник:
ImageFilledRectangle($image, $x1, $y1, $x2, $y2, $color);

Для того чтобы нарисовать незакрашенный многоугольник, вызовите функцию ImagePolygon():

$points = array($x1, $y1, $x2, $y2, $x3, $y3);
ImagePolygon($image, $points, count($points)/2, $color);Закрашенный многоугольник можно нарисовать, вызвав функцию ImageFilledPolygon():

$points = array($x1, $y1, $x2, $y2, $x3, $y3);
ImageFilledPolygon($image, $points, count($points)/2, $color);

Обсуждение
Прототипы всех пяти функций в разделе «Решение» похожи.


Первый параметр представляет собой дескриптор области отображения. Следующий набор параметров – это координаты x и y, указывающие библиотеке GD, как рисовать фигуру. В функции ImageLine() четыре координаты определяют концы линии, а в функции ImageRectangle() они
указывают противоположные углы прямоугольника. Например, вызов ImageLine($image, 0, 0, 100, 100, $color) генерирует диагональ. Передав те же самые параметры функции ImageRectangle(), получим прямоугольник с углами в точках (0,0), (100,0), (0,100) и (100,100).Функция ImagePolygon() немного отличается, поскольку она принимает переменное количество вершин. Поэтому вторым параметром является массив координат x и y. Функция начинает работу с первого набора точек и рисует линии от вершины к вершине до тех пор, пока не замкнет фигуру, возвратившись к начальной точке. Требуется по крайней мере три вершины многоугольника (всего шесть элементов массива). Третий параметр – это количество вершин в фигуре; поскольку это всегда половина числа элементов массива точек, то гибким значением для этого параметра является count($points) / 2, так как оно позволяет обновлять массив вершин, не затрагивая вызов функции ImageLine().

Наконец, все функции принимают последний параметр, определяющий цвет рисования.


Обычно это значение, возвращенное функцией ImageColorAllocate(), но оно может быть представлено константами IMG_COLOR_STYLED или IMG_COLOR_STYLEDBRUSHED, если требуется нарисовать несплошные линии, что обсуждается в рецепте 15.3. Все эти функции рисуют незакрашенные фигуры. Чтобы заставить библиотеку GD заполнить фигуру цветом рисования, вызывайте функции ImageFilledRectangle() и ImageFilledPolygon() с тем же набором аргументов, что и для их незакрашенных собратьев.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Безопасная работа с изображениями
Построение динамических изображений
Программа: создание гистограмм результатов голосования
Рисование дуг, эллипсов и окружностей
Рисование текста

Вернуться в раздел: PHP / 15. Графика