Рисование эллипса и круга
Для рисования эллипса используется функция 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.
Оставить комментарий
Оставлять комментарии могут только зарегистрированные пользователи.
Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.
Комментарии
1. mike / 20 апреля 2005, 09:49:54

<blockquote><small>Цитата:<hr size=1>

1. Когда же будут новые уроки? 8-)
2. Очепятка в "Примере 24. Вывод круга и окружности" в строке
imagefilledarc($im,110,110,100,100,0,360,$red,ARC_PIE);
[/quote]1. По понедельникам
2. Исправлено
2. WishMaster / 20 апреля 2005, 03:54:57

Респект, mike!!

1. Когда же будут новые уроки? 8-)
2. Очепятка в "Примере 24. Вывод круга и окружности" в строке
imagefilledarc($im,110,110,100,100,0,360,$red,ARC_PIE);
ARC_PIE исправить на IMG_ARC_PIE
(см. описание функции)
