Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
7 Мб
Скачать
☆

Рисование с помощью кистей

Весь процесс рисования на холсте производится с помощью цифровой "кисти". Начиная с кисти, используемой по умолчанию, самым простым изменением является изменение толщины кисти. Для этих целей используется функция imagesetthickness():

imagesetthickness($img, $thickness);

Параметр $thickness определяет толщину кисти. Хотя функция imagesetthickness () позволяет рисовать на холсте формы произвольной толщины и цвета, с ее помощью нельзя нарисовать прерывистые линии. Для этих случаев расширение GD предлагает функцию imagesetstyle ():

imagesetstyle($img_r, $style);

Параметр $style дает определение стиля в виде индексированных массивов, в которых в упорядоченном виде содержатся цвета, определяющие кисть в каждом пикселе. Например, если предположить, что существуют переменные Swhite и Sblack, которые определяют соответствующие цвета (белый и черный), то следующий массив может представить "штриховую" кисть:

Sdas = array($black, $black, $black, $white $white $white);

В этом примере массив Sdas представляет простую кисть, которая состоит из шести пикселей: трех черных, за которыми следуют три белых. Впоследствии этот массив можно передать в качестве параметра Sstyle для функции imagesetstyle (), чтобы определить текущий стиль кисти. После того как стиль будет определен с помощью этой функции, его можно будет использовать для рисования любой геометрической формы, поддерживаемой расширением GD, посредством константы IMGCOLORSTYLED, которая используется вместо того, что обычно может представлять цвет при вызове функции

imagesetstyle () выбирался стиль, после чего константа IMG_COLOR_STYLED, используемая вместо цвета, указывала на то. какой стиль необходимо выбрать в данный момент для рисования.

<?php

header("Content-type: image/jpeg");

$im = imagecreatetruecolor(100, 100);

$w = imagecolorallocate($im, 255, 255, 255);

$red = imagecolorallocate($im, 255, 0, 0);

/* Draw a dashed line, 5 red pixels, 5 white pixels */

$style = array($red, $red, $red, $red, $red, $w, $w, $w, $w, $w);

imagesetstyle($im, $style);

imageline($im, 0, 0, 100, 100, IMG_COLOR_STYLED);

imagejpeg($im);

imagedestroy($im);

?>

Чтобы определить сложные кисти, ширина которых состав­ляет несколько пикселей, необходимо использовать другой способ, который заключается в создании другого изображения "кисти" с помощью функции image setbrush ():

imagesetbrush ($img_r, $brush_r);

Параметр $img_r представляет ресурс изображения, а параметр $brush_r задает другой (иной) ресурс изображения, содержащий требуемую кисть. Этот ресурс избражения кисти ничем не отличается от любого другого представленного вам ресурса изображения, и его можно создать с помощью целого ряда функций работы с изображениями GD. Как и в случае с функцией imagesetstyle (), функцию imagesetbrush () следует вызывать всякий раз при изменении кисти. Как и в случае с функцией imagesetstyle (), вместо цвета необходимо использовать специальную константу IMG_COLOR_BRUSHED всякий раз при вызове функции рисования GD, использующей кисть.

Кисти могут быть использованы и для заливки участков холста с помощью функции imagefilledpolygon() или imagefill(). Шаблон заливки называется мозаикой (tile) и определяется с помощью функции: imagesettile($img, $tile_r);