The way that imagesetthickness works with imagerectangle() is pretty strange.
<?php
imagesetthickness(1);
imagerectangle($im, 10, 10, 50, 50, $red);
?>
This will draw a 41x41 square (because gd need the bottom right pixel, inclusive. 50 should get replaced by 49). This will "work" like:
<?php
imageline($im, 10, 10, 10, 50, $red);
imageline($im, 10, 10, 50, 10, $red);
imageline($im, 50, 10, 50, 50, $red);
imageline($im, 10, 50, 50, 50, $red);
?>
The second example:
<?php
imagesetthickness(2);
imagerectangle($im, 10, 10, 50, 50, $red);
?>
This will draw a 43x43 square because the border (thickness) is set to 2. *however* this is not a "regular" border of 2 pixels around the 41x41 original square!
On the left and right, there will be a thickness of 3, while there we be a thickness of 2.
If you take the imageline example, but set the thickness before to 2, this will *almost* do the trick: the left most pixel of the square will not be drawn.
To conclude:
1) do not forget that (width, height) of drawn rectangle is (x2-x1+1, y2-y1+1)
2) thickness is bad implemented (or at least, the behavior i s not documented) on rectangle, as the left/right thickness is not the wanted one.
3) 4*imageline() should do the trick, but after "patching" the top left pixel.
imagesetthickness
(PHP 4 >= 4.0.6, PHP 5)
imagesetthickness — Set the thickness for line drawing
Description
bool imagesetthickness
( resource $image
, int $thickness
)
imagesetthickness() sets the thickness of the lines drawn when drawing rectangles, polygons, ellipses etc. etc. to thickness pixels.
Parameters
- image
-
An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().
- thickness
-
Return Values
Returns TRUE on success or FALSE on failure.
Notes
Note: This function requires GD 2.0.1 or later (2.0.28 or later is recommended).
imagesetthickness
baldurien at bbnwn dot eu
12-Mar-2008 12:28
12-Mar-2008 12:28
ab at cd dot com
27-Jun-2007 12:05
27-Jun-2007 12:05
Note: Also, for me (working under PHP 5.0.2) this function ONLY seems to work with imageline...
