Page 1 of 1

How to draw a thick arc (20 pixels)

Posted: Fri Dec 26, 2008 11:18 pm
by ExpertAlmost
Good morning experts one and all!

I am trying to draw an arc 20 pixels wide. Unfortunately, imagearc() only draws a one pixel line while imagefilledarc() does not fill the arc to a specified depth (just various "pie" fillings).

So I tried a loop to draw 20 one-pixel lines. For some reason however, it appears that some pixels are dropped. This makes for a messy fill leaving black spots (or any background color) in the line. Attached is an example and the code is below.

What is the best way to draw a "thick" arc?

Thank you in advance for your kindness :)
PS. How do you insert an image into messages on this board using the img tags?

Code: Select all

$img = imagecreatetruecolor(214, 345);
$white = imagecolorallocate($img, 255, 255, 255);
$red   = imagecolorallocate($img, 255,   0,   0);
for ($Cnt = 1; $Cnt <= 20; $Cnt++) {
    $Measure = 300 + $Cnt;
    imagearc($img, 20, 172, $Measure, $Measure, 315, 45, $white);
}

Re: How to draw a thick arc (20 pixels)

Posted: Fri Dec 26, 2008 11:59 pm
by requinix
If you know the background color (what you're drawing on top of), use imagefilledarc to draw the far edge of the arc in whatever color you want, then again using the background color for the inside of the arc.

Thus you draw a pie slice in one color, then "erase" the part you don't want. Subtraction with shapes.

If you don't know the background, draw the arc on a new, transparent image. Then copy the arc onto the destination image.


Oh, and the [img] tag will insert an offsite image into your post. Otherwise you can just attach it.