Рисование эллипса и круга
Для рисования эллипса используется функция imageellipse
:
int imageellipse (resource image, int cx, int cy, int w, int h, int color)
где,
- image - идентификатор изображения;
- cx, cy - координаты центра эллипса;
- w - ширина эллипса (диаметр);
- h - высота эллипса (диаметр);
- color - цвет.
Пример 19. Рисование эллипса:
<?php header ("Content-type: image/png"); $im = imagecreatetruecolor(320, 240); $ink = imagecolorallocate($im, 255, 255, 255); imageellipse($im,160,120,200,150,$ink); imagepng($im); imagedestroy($im); ?>
Результат работы этой программы выглядит следующим образом:
Обратите внимание: эта функция добавлена в PHP 4.0.6 и требует библиотеки GD 2.0.2
Если у вас более ранняя версия PHP (или GD), то для рисования эллипса вы можете
использовать функцию imagearc
:
int imagearc (resource image, int cx, int cy, int w, int h, 0, 360, int color)
где,
- image - идентификатор изображения;
- cx, cy - координаты центра эллипса;
- w - ширина эллипса;
- h - высота эллипса;
- color - цвет.
Пример 20. Рисование эллипса с помощью функции imagearc
:
<?php header ("Content-type: image/png"); $im = imagecreatetruecolor(320, 240); $ink = imagecolorallocate($im, 255, 255, 255); imagearc($im,160,120,200,150,0,360,$ink); imagepng($im); imagedestroy($im); ?>
Результат работы этой программы выглядит следующим образом:
Рисование закрашенного эллипса
Для рисования закрашенного эллипса используется функция imagefilledellipse
:
int imagefilledellipse (resource image, int cx, int cy, int w, int h, int color)
Она рисует закрашенный эллипс цвета color с центром в точке cx:cy, высотой h и шириной w пикселей.
Пример 21. Рисование закрашенного эллипса:
<?php header ("Content-type: image/png"); $im = imagecreatetruecolor(320, 240); $ink = imagecolorallocate($im, 255, 128, 255); imagefilledellipse($im,160,120,200,150,$ink); imagepng($im); imagedestroy($im); ?>
Результат работы этой программы выглядит следующим образом:
Обратите внимание: эта функция добавлена в PHP 4.0.6 и требует библиотеки GD 2.0.2
Если у вас GD версии 2.0.1, то для рисования эллипса вы можете
использовать функцию imagefilledarc
:
bool imagefilledarc (resource image, int cx, int cy, int w, int h, 0, 360, int color, IMG_ARC_PIE)
Пример 22. Рисование закрашенного эллипса с помощью функции imagefilledarc:
<?php header ("Content-type: image/png"); $im = imagecreatetruecolor(320, 240); $ink = imagecolorallocate($im, 255, 128, 255); imagefilledarc($im,160,120,200,150,0,360,$ink,IMG_ARC_PIE); imagepng($im); imagedestroy($im); ?>
Результат работы этой программы выглядит следующим образом:
Обратите внимание! Эллипс нарисованный с помощью функции imagefilledarc
выглядит меньше, несмотря
на то что фактически имеет тот же радиус. Это отличие хорошо иллюстрирует следующий рисунок:
«Пустой» эллипс
Если вы хотите нарисовать "пустой" эллипс, то можно воспользоваться комбинацией функцийimagearc
и imagefilledarc
. Первая функция нарисует закрашенный эллипс цветом фона, а вторая нарисует рамку цветом чернил.
Пример 23. Рисование "пустого" эллипса:
<?php header ("Content-type: image/png"); $im = imagecreatetruecolor(320, 240); $black = imagecolorallocate($im, 0, 0, 0); $ink = imagecolorallocate($im, 255, 255, 255); $gray = imagecolorallocate($im, 128, 128, 128); // Нарисуем 100 случайных линий for ($i=0;$i<100;$i++) { $x1=rand(0,319); $x2=rand(0,319); $y1=rand(0,239); $y2=rand(0,239); imageline($im,$x1,$x2,$y1,$y2,$gray); } // Сотрем внутреннюю часть эллипса imagefilledarc($im,160,120,200,150,0,360,$black,ARC_PIE); // Нарисуем рамку imagearc($im,160,120,200,150,0,360,$ink); imagepng($im); imagedestroy($im); ?>
Результат работы этой программы выглядит следующим образом:
Рисование окружности и круга
Так как круг является частным случаем эллипса, то для его рисования используются те же функции, только задаются одинаковые диаметры по высоте и ширине.
Пример 24. Вывод круга и окружности:
<?php header ("Content-type: image/png"); $im = imagecreatetruecolor(320, 240); $ink = imagecolorallocate($im, 255, 255, 255); $red = imagecolorallocate($im, 255, 0, 0); // Круг imagefilledarc($im,110,110,100,100,0,360,$red,IMG_ARC_PIE); // Окружность imagearc($im,210,130,100,100,0,360,$ink); imagepng($im); imagedestroy($im); ?>
Результат работы этой программы выглядит следующим образом:
Смотрите также:
- Алгоритм Брезенхема построения окружности;
- PHP Manual - функция imagearc;
- PHP Manual - функция imagefilledarc;
- PHP Manual - функция imageellipse;
- PHP Manual - функция imagefilledellipse.
Оставить комментарий
Комментарии
1. Когда же будут новые уроки? 8-)
2. Очепятка в "Примере 24. Вывод круга и окружности" в строке
imagefilledarc($im,110,110,100,100,0,360,$red,ARC_PIE);
[/quote]1. По понедельникам
2. Исправлено
1. Когда же будут новые уроки? 8-)
2. Очепятка в "Примере 24. Вывод круга и окружности" в строке
imagefilledarc($im,110,110,100,100,0,360,$red,ARC_PIE);
ARC_PIE исправить на IMG_ARC_PIE
(см. описание функции)