Start · Sprachen · PHP · Referenz · imagedashedline

imagedashedline

Funktion

Zeichnet eine gestrichelte Linie zwischen zwei Punkten in einem GD-Bild.

seit PHP 5.0.0 Kategorie: image

Signatur

imagedashedline(GdImage $image, int $x1, int $y1, int $x2, int $y2, int $color): bool

Beschreibung

imagedashedline() zeichnet eine gestrichelte Linie von Koordinate ($x1, $y1) nach ($x2, $y2) in das angegebene Bild-Objekt. Die Linie besteht aus abwechselnden Ein- und Aus-Segmenten mit jeweils 4 Pixeln Länge.

Die Funktion ist hauptsächlich aus historischen Gründen vorhanden und wird als veraltet betrachtet. Es wird empfohlen, stattdessen imageline() in Kombination mit imagesetstyle() zu verwenden, um flexible, benutzerdefinierte Linienmuster zu erzeugen.

Der $color-Parameter erwartet einen mit imagecolorallocate() oder imagecolorallocatealpha() erzeugten Farbwert. Die Funktion ist nützlich, wenn einfache gestrichelte Linien ohne aufwändige Stilkonfiguration benötigt werden.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Ein GD-Bild-Objekt, das z. B. durch imagecreatetruecolor() oder imagecreatefromjpeg() erzeugt wurde.
$x1 Pflicht int X-Koordinate des Startpunkts der Linie (in Pixeln, von links).
$y1 Pflicht int Y-Koordinate des Startpunkts der Linie (in Pixeln, von oben).
$x2 Pflicht int X-Koordinate des Endpunkts der Linie (in Pixeln, von links).
$y2 Pflicht int Y-Koordinate des Endpunkts der Linie (in Pixeln, von oben).
$color Pflicht int Farbe der Linie als Integer, erzeugt mit imagecolorallocate().

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler.

Beispiele

Einfache gestrichelte Linie zeichnen

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

// Hintergrundfarbe (weiß)
$weiss = imagecolorallocate($bild, 255, 255, 255);
imagefill($bild, 0, 0, $weiss);

// Linienfarbe (rot)
$rot = imagecolorallocate($bild, 255, 0, 0);

// Gestrichelte Linie von (10, 50) nach (190, 50) zeichnen
imagedashedline($bild, 10, 50, 190, 50, $rot);

// Bild als PNG ausgeben
header('Content-Type: image/png');
imagepng($bild);
imagedestroy($bild);

Empfohlene Alternative mit imagesetstyle()

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

// Farben definieren
$weiss = imagecolorallocate($bild, 255, 255, 255);
$blau  = imagecolorallocate($bild, 0, 0, 255);
$trans = IMG_COLOR_TRANSPARENT;

imagefill($bild, 0, 0, $weiss);

// Benutzerdefiniertes Linienmuster: 4 Pixel an, 4 Pixel aus
$stil = [$blau, $blau, $blau, $blau, $trans, $trans, $trans, $trans];
imagesetstyle($bild, $stil);

// Linie mit dem definierten Stil zeichnen
imageline($bild, 10, 50, 190, 50, IMG_COLOR_STYLED);

header('Content-Type: image/png');
imagepng($bild);
imagedestroy($bild);

// Wichtig · Fallstricke

Veraltet: imagedashedline() wird von der offiziellen PHP-Dokumentation als veraltet markiert. Die Funktion bietet keinerlei Konfigurationsmöglichkeit für das Strichmuster. Für flexible Liniengestaltung sollte stattdessen imageline() zusammen mit imagesetstyle() und der Konstante IMG_COLOR_STYLED verwendet werden.

Das feste Muster besteht aus 4 gesetzten und 4 ausgelassenen Pixeln. Bei diagonalen Linien kann das sichtbare Muster variieren.