Start · Sprachen · PHP · Referenz · imagesetstyle

imagesetstyle

Funktion

Setzt einen benutzerdefinierten Linienstil für nachfolgende Linienzeichenoperationen mit <code>imageline()</code> oder <code>imagepolygon()</code>, wenn als Farbe <code>IMG_COLOR_STYLED</code> verwendet wird.

seit PHP 4.0.6 Kategorie: image

Signatur

imagesetstyle(GdImage $image, array $style): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
(Ein 200×100 Pixel großes PNG-Bild mit einer gestrichelten blauen Linie in der Mitte)

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);
?>
(Ein 300×200 Pixel großes PNG-Bild mit abwechselnd rot-grünen vertikalen Gitterlinien)

// 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.