15.3. Drawing with Patterned Lines
Problem
You want to draw shapes using line styles other than the default, a solid line.
Solution
To draw shapes with a patterned line, use ImageSetStyle( )
and pass in
IMG_COLOR_STYLED as the image color:
$black = ImageColorAllocate($image, 0, 0, 0); $white = ImageColorAllocate($image, 255, 255, 255); // make a two-pixel thick black and white dashed line $style = array($black, $black, $white, $white); ImageSetStyle($image, $style); ImageLine($image, 0, 0, 50, 50, IMG_COLOR_STYLED); ImageFilledRectangle($image, 50, 50, 100, 100, IMG_COLOR_STYLED);
Discussion
The line pattern is defined by an array of colors. Each element in the array is another pixel in the brush. It’s often useful to repeat the same color in successive elements, as this increases the size of the stripes in the pattern.
For instance, here is code for a square drawn with alternating white and black pixels, as shown in left side of Figure 15-4:
$style = array($white, $black); ImageSetStyle($image, $style); ImageFilledRectangle($image, 0, 0, 49, 49, IMG_COLOR_STYLED);
This is the same square, but drawn with a style of five white pixels followed by five black ones, as shown in the middle of Figure 15-4:
$style = array($white, $white, $white, $white, $white,
$black, $black, $black, $black, $black);
ImageSetStyle($image, $style);
ImageFilledRectangle($image, 0, 0, 49, 49, IMG_COLOR_STYLED);Figure 15-4. Three squares with alternating white and black pixels
The patterns look completely ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access