Signatur
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
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);
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);
// 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.