Start · Sprachen · PHP · Referenz · imagearc

imagearc

Funktion

Zeichnet einen Kreisbogen (oder Ellipsenbogen) in ein GD-Bild anhand von Mittelpunkt, Abmessungen und Winkelangaben.

seit PHP 5.0.0 Kategorie: image

Signatur

imagearc(GdImage $image, int $cx, int $cy, int $width, int $height, int $start_angle, int $end_angle, int $color): bool

Beschreibung

imagearc() zeichnet einen Bogen auf das angegebene Bild-Ressource-Objekt (GdImage). Der Bogen wird durch den Mittelpunkt ($cx, $cy), die Breite und Höhe des umgebenden Rechtecks sowie durch einen Start- und Endwinkel definiert. Die Winkel werden in Grad angegeben, wobei 0° rechts (3-Uhr-Position) liegt und die Winkel im Uhrzeigersinn zunehmen.

Mit dieser Funktion lassen sich sowohl Kreisbögen (wenn $width und $height gleich sind) als auch Ellipsenbögen zeichnen. Sie eignet sich gut für Diagramme, runde UI-Elemente oder Fortschrittsanzeigen. Im Gegensatz zu imagefilledarc() wird nur der Rand des Bogens gezeichnet, ohne ihn zu füllen.

Soll ein vollständiger Kreis gezeichnet werden, setzt man $start_angle auf 0 und $end_angle auf 360. Die Farbe wird mit imagecolorallocate() erzeugt und als Integer übergeben.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das GD-Bildobjekt, auf dem der Bogen gezeichnet wird. Wird typischerweise von Funktionen wie imagecreatetruecolor() oder imagecreatefromjpeg() zurückgegeben.
$cx Pflicht int X-Koordinate des Mittelpunkts des Bogens in Pixeln.
$cy Pflicht int Y-Koordinate des Mittelpunkts des Bogens in Pixeln.
$width Pflicht int Breite des Bogens (Durchmesser in X-Richtung) in Pixeln.
$height Pflicht int Höhe des Bogens (Durchmesser in Y-Richtung) in Pixeln. Ist dieser Wert ungleich $width, entsteht ein Ellipsenbogen.
$start_angle Pflicht int Startwinkel des Bogens in Grad. 0° entspricht der 3-Uhr-Position; die Winkel wachsen im Uhrzeigersinn.
$end_angle Pflicht int Endwinkel des Bogens in Grad. Der Bogen wird vom $start_angle bis zum $end_angle im Uhrzeigersinn gezeichnet.
$color Pflicht int Die Farbe des Bogens als Integer, erzeugt mit imagecolorallocate() oder imagecolorallocatealpha().

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiges Bildobjekt).

Beispiele

Einfachen Halbkreis zeichnen

<?php
// Bild erstellen
$image = imagecreatetruecolor(200, 200);

// Hintergrundfarbe: Weiß
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

// Bogenfarbe: Rot
$red = imagecolorallocate($image, 255, 0, 0);

// Halbkreis (0° bis 180°) mit Mittelpunkt (100, 100) und Durchmesser 150
imagearc($image, 100, 100, 150, 150, 0, 180, $red);

// Ausgabe als PNG
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
(PNG-Bild mit einem roten Halbkreis)

Tortendiagramm-Segment simulieren

<?php
// Bild erstellen
$image = imagecreatetruecolor(300, 300);

// Hintergrund: Weiß
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

$blue   = imagecolorallocate($image, 0, 80, 200);
$green  = imagecolorallocate($image, 0, 180, 60);
$orange = imagecolorallocate($image, 220, 120, 0);

$cx = 150;
$cy = 150;
$d  = 220; // Durchmesser

// Segment 1: 0° – 120°
imagearc($image, $cx, $cy, $d, $d, 0, 120, $blue);
imagefilledpolygon($image, [$cx, $cy, $cx + 110, $cy, $cx + 55, $cy + 95], $blue);

// Segment 2: 120° – 240°
imagearc($image, $cx, $cy, $d, $d, 120, 240, $green);

// Segment 3: 240° – 360°
imagearc($image, $cx, $cy, $d, $d, 240, 360, $orange);

header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
(PNG-Bild mit drei farbigen Kreisbogen-Segmenten)

// Wichtig · Fallstricke

Winkelrichtung: Im Gegensatz zur mathematischen Konvention wachsen die Winkel bei imagearc() im Uhrzeigersinn. 0° liegt rechts (3-Uhr), 90° unten (6-Uhr), 180° links (9-Uhr) usw.

Vollständiger Kreis: Um einen vollständigen Kreis zu zeichnen, sollte der Endwinkel 360 (nicht 0) verwendet werden, da ein Bogen von 0° bis 0° als leerer Bogen interpretiert werden könnte.

Seit PHP 8.0 wird statt einer Ressource ein GdImage-Objekt verwendet. Älterer Code, der resource-Typprüfungen durchführt, muss angepasst werden.