Draw a partial arc and fill it

- « imagefill

- imagefilledellipse »

- PHP Manual
- GD and Image Functions
- Draw a partial arc and fill it

# imagefilledarc

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagefilledarc — Draw a partial arc and fill it

### Description

imagefilledarc(
GdImage `$image`,
int `$center_x`,
int `$center_y`,
int `$width`,
int `$height`,
int `$start_angle`,
int `$end_angle`,
int `$color`,
int `$style`
): bool

Draws a partial arc centered at the specified coordinate in the given `image`.

### Parameters

`image`

  A GdImage object, returned by one of the image creation functions, such as imagecreatetruecolor().

`center_x`

  x-coordinate of the center.

`center_y`

  y-coordinate of the center.

`width`

  The arc width.

`height`

  The arc height.

`start_angle`

  The arc start angle, in degrees.

`end_angle`

  The arc end angle, in degrees. 0° is located at the three-o'clock position, and the arc is drawn clockwise.

`color`

  A color identifier created with imagecolorallocate().

`style`

  A bitwise OR of the following possibilities:

  1. `IMG_ARC_PIE`
  2. `IMG_ARC_CHORD`
  3. `IMG_ARC_NOFILL`
  4. `IMG_ARC_EDGED`
  `IMG_ARC_PIE` and `IMG_ARC_CHORD` are mutually exclusive; `IMG_ARC_CHORD` just connects the starting and ending angles with a straight line, while `IMG_ARC_PIE` produces a rounded edge. `IMG_ARC_NOFILL` indicates that the arc or chord should be outlined, not filled. `IMG_ARC_EDGED`, used together with `IMG_ARC_NOFILL`, indicates that the beginning and ending angles should be connected to the center - this is a good way to outline (rather than fill) a 'pie slice'.

### Return Values

Returns `true` on success or `false` on failure.

### Changelog

Version | Description
--- | ---
8.0.0 | `image` expects a GdImage instance now; previously, a valid `gd` resource was expected.

### Examples

Example #1 Creating a 3D looking pie

    <?php

    // create image
    $image = imagecreatetruecolor(100, 100);

    // allocate some colors
    $white    = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
    $gray     = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
    $darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
    $navy     = imagecolorallocate($image, 0x00, 0x00, 0x80);
    $darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);
    $red      = imagecolorallocate($image, 0xFF, 0x00, 0x00);
    $darkred  = imagecolorallocate($image, 0x90, 0x00, 0x00);

    // make the 3D effect
    for ($i = 60; $i > 50; $i--) {
       imagefilledarc($image, 50, $i, 100, 50, 0, 45, $darknavy, IMG_ARC_PIE);
       imagefilledarc($image, 50, $i, 100, 50, 45, 75 , $darkgray, IMG_ARC_PIE);
       imagefilledarc($image, 50, $i, 100, 50, 75, 360 , $darkred, IMG_ARC_PIE);
    }

    imagefilledarc($image, 50, 50, 100, 50, 0, 45, $navy, IMG_ARC_PIE);
    imagefilledarc($image, 50, 50, 100, 50, 45, 75 , $gray, IMG_ARC_PIE);
    imagefilledarc($image, 50, 50, 100, 50, 75, 360 , $red, IMG_ARC_PIE);

    // flush image
    header('Content-type: image/png');
    imagepng($image);
    ?>

The above example will output something similar to: