imagepolygon

(PHP 4, PHP 5, PHP 7, PHP 8)

imagepolygonZeichnet ein Polygon

Beschreibung

Signatur seit PHP 8.0.0 (keine Unterstützung für benannte Argumente)

imagepolygon(GdImage $image, array $points, int $color): bool

Alternative Signatur (seit PHP 8.1.0 veraltet)

imagepolygon(
    GdImage $image,
    array $points,
    int $num_points,
    int $color
): bool

imagepolygon() erzeugt ein Polygon im angegebenen image.

Parameter-Liste

image

Ein GdImage-Objekt, das von einer der Funktionen zur Bilderzeugung, z. B. imagecreatetruecolor(), zurückgegeben wurde.

points

Ein Array, das die Eckpunkte des Polygons enthält, z. B.:

points[0] = x0
points[1] = y0
points[2] = x1
points[3] = y1

num_points

Die Anzahl der Eckpunkte, die mindestens 3 sein muss.

Wenn dieser Parameter gemäß der zweiten Signatur weggelassen wird, muss points eine gerade Anzahl von Elementen haben, und num_points wird angenommen als count($punkte)/2.
color

Eine Farbkennung, die mit imagecolorallocate() erzeugt wurde.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Der Parameter num_points ist veraltet und sollte nicht mehr verwendet werden.
8.0.0 image erwartet nun eine GdImage-Instanz; vorher wurde eine gültige gd-Ressource erwartet.

Beispiele

Beispiel #1 imagepolygon()-Beispiel

<?php
// Ein leeres Bild erstellen
$bild = imagecreatetruecolor(400, 300);

// Dem Polygon eine Farbe zuweisen
$farbe_poly = imagecolorallocate($bild, 255, 255, 255);

// Das Polygon zeichnen
imagepolygon($bild, array(
0, 0,
100, 200,
300, 200
),
$farbe_poly);

// Das Bild an den Browser ausgeben
header('Content-type: image/png');

imagepng($bild);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Ausgabe des Beispiels : imagepolygon()

Siehe auch

add a note

User Contributed Notes 3 notes

up
3
tatlar at yahoo dot com
18 years ago
Function to get 5-sided polygon (pentagon) or star (pentagram) co-ords. <?phpfunction _makeFiveSidedStar( $x, $y, $radius, $shape='polygon', $spiky=NULL ) {    $point = array() ; // new array                                                                                                                       $angle = 360 / 5 ;                                                                                                                        $point[0]['x'] = $x ;                                                                                                                     $point[0]['y'] = $y - $radius ;                                                                                                           $point[2]['x'] = $x + ( $radius * cos( deg2rad( 90 - $angle ) ) ) ;     $point[2]['y'] = $y - ( $radius * sin( deg2rad( 90 - $angle ) ) ) ;    $point[4]['x'] = $x + ( $radius * sin( deg2rad( 180 - ( $angle*2 ) ) ) ) ;    $point[4]['y'] = $y + ( $radius * cos( deg2rad( 180 - ( $angle*2 ) ) ) ) ;    $point[6]['x'] = $x - ( $radius * sin( deg2rad( 180 - ( $angle*2 ) ) ) ) ;                                                                $point[6]['y'] = $y + ( $radius * cos( deg2rad( 180 - ( $angle*2 ) ) ) ) ;    $point[8]['x'] = $x - ( $radius * cos( deg2rad( 90 - $angle ) ) ) ;                                                                       $point[8]['y'] = $y - ( $radius * sin( deg2rad( 90 - $angle ) ) ) ;    if( $shape == 'star' ) {        if( $spiky == NULL ) $spiky = 0.5 ;  // degree of spikiness, default to 0.5        $indent = $radius * $spiky ;        $point[1]['x'] = $x + ( $indent * cos( deg2rad( 90 - $angle/2 ) ) ) ;                                                                     $point[1]['y'] = $y - ( $indent * sin( deg2rad( 90 - $angle/2 ) ) ) ;                                                             $point[3]['x'] = $x + ( $indent * sin( deg2rad( 180 - $angle ) ) ) ;                                                                      $point[3]['y'] = $y - ( $indent * cos( deg2rad( 180 - $angle ) ) ) ;        $point[5]['x'] = $x ;                                                                                                                     $point[5]['y'] = $y + ( $indent * sin( deg2rad( 180 - $angle ) ) ) ;        $point[7]['x'] = $x - ( $indent * sin( deg2rad( 180 - $angle ) ) ) ;                                                                      $point[7]['y'] = $y - ( $indent * cos( deg2rad( 180 - $angle ) ) ) ;                                                                      $point[9]['x'] = $x - ( $indent * cos( deg2rad( 90 - $angle/2 ) ) ) ;                                                                     $point[9]['y'] = $y - ( $indent * sin( deg2rad( 90 - $angle/2 ) ) ) ;    }    ksort( $point ) ;    $coords = array() ;  // new array                                                                                                                     foreach( $point as $pKey=>$pVal ) {                                                                                                           if( is_array( $pVal ) ) {                                                                                                                     foreach( $pVal as $pSubKey=>$pSubVal ) {                                                                                                      if( !empty( $pSubVal ) ) array_push( $coords, $pSubVal ) ;                                                                            }                                                                                                                                     }                                                                                                                                     }    return $coords ;}$values = _makeFiveSidedStar( 100, 100, 50, 'star' ) ;?>
up
2
licson0729 at gmail dot com
13 years ago
Function to draw a n-sided regular polygon<?php$img = imagecreatetruecolor(1360,768);function regularPolygon($img,$x,$y,$radius,$sides,$color){    $points = array();    for($a = 0;$a <= 360; $a += 360/$sides)    {        $points[] = $x + $radius * cos(deg2rad($a));        $points[] = $y + $radius * sin(deg2rad($a));    }    return imagepolygon($img,$points,$sides,$color);}regularPolygon($img,1360/2,768/2,300,8,0xffffff);//Test drawheader('Content-type: image/png');imagepng($img);imagedestroy($img);?>
up
-2
jsnell at networkninja dot com
24 years ago
Here are some handy routines for rotation and translation of polygons.  Scaling could be added easily as well.

<?php
function translate_point(&$x,&$y,$angle,$about_x,$about_y,$shift_x,$shift_y)
{
    $x -= $about_x;
    $y -= $about_y;
    $angle = ($angle / 180) * M_PI;
/* math:
[x2,y2] = [x,  *  [[cos(a),-sin(a)],
           y]      [sin(a),cos(a)]]
==>
x = x * cos(a) + y*sin(a) 
y = x*-sin(a) + y*cos(a)
*/

    $new_x = $x * cos($angle) - $y * sin($angle);
    $new_y = $x * sin($angle) + $y * cos($angle);
    $x = $new_x+ $about_x + $shift_x ;
    $y = $new_y + $about_y + $shift_y;
}

function translate_poly($point_array, $angle, $about_x, $about_y,$shift_x,$shift_y)
{
    $translated_poly = Array();
    while(count($point_array) > 1)
    {
        $temp_x = array_shift($point_array);
        $temp_y = array_shift($point_array);
        translate_point($temp_x, $temp_y, $angle, $about_x, $about_y,$shift_x, $shift_y);
        array_push($translated_poly, $temp_x);
        array_push($translated_poly, $temp_y);
    }
    return $translated_poly;
}
?>
To Top