В прошлый раз я говорил о простом методе рисования, позволяющем избежать GD, а затем использовал GD, чтобы нарисовать самый простой «рисунок» — прямую линию.
На этот раз я продолжу рисовать прямую линию вниз. Части, которые были подробно объяснены в предыдущем коде, на этот раз повторяться не будут.
<?
Header("Тип контента: изображение/png");
$im = ImageCreate (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
// Давайте сегодня воспользуемся оранжевым.
// Точно такое же использование, как и функция imageline,
ImageDashedLine($im,0,100,199,100,$col_orn);
// Это рисует пунктирную линию.
// Давайте проведем тест ниже. Используется для иллюстрации проблемы.
$col_yel = ImageColorAllocate($im, 255,255,0);
//желтый.
ImageLine($im,0,99,199,99,$col_yel);
// Рисуем желтую линию у нижнего края изображения.
ImageLine($im,200,0,200,100,$col_orn);
// Пытался нарисовать оранжевую линию на дальнем правом краю изображения, но ничего не вышло.
// Это показывает, что диапазон координат изображения шириной 200 и высотой 100 составляет от (0,0) до (199,99).
ИзображениеPNG ($ im);
ImageDestroy($im);
// Давайте сначала закончим этот раздел.
?>
Следующий эффект будет отличным! Я тоже сейчас учусь и продаю. В PHP 4.0.6 и выше добавлено такое использование — вы можете рисовать линии разными цветами! Пример следующий:
<?
Header("Тип контента: изображение/png");
$im = ImageCreate (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$style=array($col_red,$col_red,$col_black,$col_orn,$col_orn,$col_orn,$col_black);
ImageSetStyle($im, $style);
ImageLine($im, 0, 50, 199, 50, IMG_COLOR_STYLED)
ImagePNG($im);
ImageDestroy($im);
?>
Посмотрите на эффект.
Пожалуйста, объясните три строки, которые я отделил пустыми строками. Определен массив $style, членами которого являются серии цветов;
Затем была выполнена функция, а затем IMG_COLOR_STYLED «цвет» был использован для рисования такой волшебной «прямой линии» ——
Попеременный эффект красного, черного и оранжевого цветов. Если вы посмотрите внимательно, вы обнаружите, что чередующаяся последовательность красного, черного и оранжевого — это то, что мы определяем.
Последовательность членов массива $style: красный, красный, черный, оранжевый, оранжевый, оранжевый, черный, а затем цикл начинается снова...
Вы понимаете? Обратите внимание, что эта функция поддерживается только после PHP 4.0.6.
Основываясь на основах рисования линий, которые я подробно объяснил, я хочу написать функции для рисования других геометрических фигур за один раз. Мне нужно всем напомнить, что какую бы геометрическую фигуру вы ни рисовали, это не что иное, как схватывание нескольких элементов этой фигуры. Не считая цвета, элементами различной графики являются:
точка, два элемента: абсцисса и ордината,
прямоугольник, четыре элемента: абсцисса и ордината,
дуга в левом верхнем углу и правом нижнем углу. Эллиптическая дуга; нарисуйте дугу и нарисуйте 360 градусов, чтобы сформировать круг; нарисуйте эллиптическую дугу и нарисуйте 360 градусов, чтобы сформировать круг;
Он образует эллипс; следовательно, существует шесть элементов этой дуги: горизонтальные и вертикальные координаты центральной точки, длина горизонтальной оси, длина вертикальной оси, а также начальная и конечная точки дуги.
Посмотрите на следующий пример.
<?
Header("Тип контента: изображение/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageSetPixel($im,20,10,$col_orn);
// Это маленькая точка, интересно, ее видно?
ImageRectangle($im,25,20,95,55,$col_blu);
// Синий прямоугольник.
ImageArc($im,20,85,50,40,225,360,$col_grn);
// Зеленая эллиптическая дуга, центр (20,85), горизонтальная ось 50, вертикальная ось 40, от 225 до 360 градусов.
// Видно, что начальная и конечная точки дуги здесь измеряются в углах.
// Он рассчитывается по часовой стрелке с горизонтальным направлением вправо равным 0 градусам.
ImageArc($im,160,60,40,40,0,360,$col_orn);
// Оранжевый полный круг. Пока длина горизонтальной оси равна длине вертикальной оси, это идеальный круг.
// В старшей школе мы все учили: круг — это частный случай эллипса!
//Наконец рисуем еще одну дугу. Может ли центр круга находиться за пределами изображения?
ImageArc($im,160,140,240,240,0,360,$col_red);
// Может!
ИзображениеPNG ($ im);
ImageDestroy($im);
?>
Конечно, при рисовании неизбежно закрашивать определенную область определенным цветом. GD имеет три метода раскраски: раскраска прямоугольной области,
Один из них — окрасить замкнутую область, в которой расположена указанная точка, а другой — окрасить область, окруженную указанным цветом. Посмотрите на следующие примеры:
<?
Header("Тип контента: изображение/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_yel = ImageColorAllocate($im, 255,255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im,5,40,50,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
//Выше показана первая раскраска. Нарисуйте прямоугольник напрямую.
// Я намеренно окружил небольшую область четырьмя прямоугольниками разных цветов.
// Используется для иллюстрации второй раскраски.
ИзображениеPNG ($ im);
ImageDestroy($im);
// Взгляните на эффект.
?>
Затем:
<?
Header("Тип контента: изображение/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_yel = ImageColorAllocate($im, 255,255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im,5,40,50,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
//Выше приведена первая раскраска. Нарисуйте прямоугольник напрямую.
// Я намеренно окружил небольшую область четырьмя прямоугольниками разных цветов.
> // Используется для иллюстрации второй раскраски.
ImageFill($im,70,70,$col_grn);
// Это вторая раскраска.
ImageRectangle($im,120,40,190,90,$col_grn);
// Давайте нарисуем прямоугольник, чтобы сделать рамку. Фактически, в качестве рамки можно использовать бордюр любой формы.
ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
// Красим зеленый прямоугольник оранжевым.
// Пока указанная точка находится в пределах этого «поля», она не имеет никакого отношения к положению точки в области.
// На самом деле эта функция работает следующим образом:
//Начинаем с указанной точки и ищем границу указанного цвета. Если она найдена, останавливаемся.
// Если не можете найти, закрасьте точки прохождения нужным цветом.
ИзображениеPNG ($ im);
ImageDestroy($im);
// Взгляните на эффект.
// Теперь картинка, которую мы сделали, красочная, но в браузере на картинке
// Щелкните правой кнопкой мыши->Свойства: Всего 214 байт!
?>
Давайте на этот раз остановимся на этом.