Для рисования эллипса используется функция 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 (или 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);
?>
Если у вас 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);
?>