Signatur
Beschreibung
imagesetstyle() definiert ein Muster (Stil) für Linien, das als Array von Farbwerten übergeben wird. Dieses Muster wird zyklisch auf jedes Pixel einer Linie angewendet, wenn beim Zeichnen IMG_COLOR_STYLED als Farbe übergeben wird. So lassen sich gestrichelte, gepunktete oder beliebig gemusterte Linien erzeugen.
Das $style-Array enthält eine geordnete Abfolge von Farb-IDs (erzeugt mit imagecolorallocate()) und kann als Platzhalter für transparente Pixel den Wert IMG_COLOR_TRANSPARENT enthalten. Die Länge des Arrays bestimmt die Periode des Musters.
Typische Anwendungsfälle sind Diagramme mit gestrichelten Gitternetzlinien, Rahmen mit Muster oder andere grafische Elemente, die einen wiederholenden Linienstil benötigen. Der Stil bleibt aktiv, bis er erneut gesetzt oder das Bild zerstört wird.
Zu beachten ist, dass imagesetstyle() immer zusammen mit IMG_COLOR_STYLED (für reine Stilfarbe) oder IMG_COLOR_STYLEDBRUSHED (für Stil kombiniert mit einem Pinsel) als Farb-Argument bei den Zeichenfunktionen verwendet werden muss.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Das GD-Bildobjekt, auf dem der Stil gesetzt werden soll. Wird üblicherweise mit imagecreatetruecolor() oder ähnlichen Funktionen erstellt. |
|
| $style Pflicht | array | Ein Array aus Farbwerten (Integer, erzeugt mit imagecolorallocate()), das das Linienmuster beschreibt. Verwende IMG_COLOR_TRANSPARENT für transparente Stellen im Muster. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler.Beispiele
Gestrichelte Linie mit imagesetstyle zeichnen
<?php
// Bild erstellen
$image = imagecreatetruecolor(200, 100);
// Farben definieren
$white = imagecolorallocate($image, 255, 255, 255);
$blue = imagecolorallocate($image, 0, 0, 200);
// Hintergrund weiß füllen
imagefilledrectangle($image, 0, 0, 199, 99, $white);
// Stil: 4 blaue Pixel, 4 transparente Pixel (gestrichelt)
$style = [
$blue, $blue, $blue, $blue,
IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT,
IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT,
];
imagesetstyle($image, $style);
// Linie mit dem gesetzten Stil zeichnen
imageline($image, 10, 50, 190, 50, IMG_COLOR_STYLED);
// Ausgabe als PNG
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
Mehrfarbiger Linienstil für ein Diagramm-Gitter
<?php
// Bild erstellen
$image = imagecreatetruecolor(300, 200);
// Farben definieren
$bg = imagecolorallocate($image, 240, 240, 240);
$red = imagecolorallocate($image, 200, 0, 0);
$green = imagecolorallocate($image, 0, 180, 0);
// Hintergrund einfärben
imagefilledrectangle($image, 0, 0, 299, 199, $bg);
// Stil: abwechselnd rot und grün (2 Pixel je Farbe)
$style = [
$red, $red,
$green, $green,
];
imagesetstyle($image, $style);
// Mehrere vertikale Gitterlinien zeichnen
for ($x = 20; $x < 300; $x += 20) {
imageline($image, $x, 0, $x, 199, IMG_COLOR_STYLED);
}
// Ausgabe als PNG
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
// Wichtig · Fallstricke
Wichtig: Der Stil wirkt nur, wenn als Farbe beim Zeichnen IMG_COLOR_STYLED übergeben wird — nicht bei normalen Farbwerten. Ohne diesen speziellen Farbwert hat imagesetstyle() keinen Effekt.
Für Kombinationen aus Stil und Pinsel (Brush) kann IMG_COLOR_STYLEDBRUSHED verwendet werden, sofern zuvor auch imagesetbrush() aufgerufen wurde.
Das Stilarray wird intern kopiert; Änderungen am Array nach dem Aufruf von imagesetstyle() haben keinen Einfluss auf den gesetzten Stil.