|
imagerectangle
Draw a rectangle
(PHP 4, PHP 5)
Related Examples ( Source code ) » imagerectangle Examples ( Source code ) » Draw string and fill rectangle Examples ( Source code ) » Drawing a Square and a string Examples ( Source code ) » Create PNG file Code Examples / Notes » imagerectanglecarl
Oh I don't know. He was on the right track.. <?php $rows = 5; $cols = 11; $eachx = 12; $eachy = 18; $max = array($cols*$eachx, $rows*$eachy); $im = imagecreatetruecolor($max[0]+1,$max[1]+1); $white = imagecolorallocate($im,255,255,255); imagefill($im,0,0,$white); $black = imagecolorallocate($im,50,50,50); for($x=$max[0]/2;$x>=0;$x-=$eachx) { imagerectangle($im, ($max[0]/2)+$x,0, ($max[0]/2)-$x,$max[1], $black); } for($y=$max[1]/2;$y>=0;$y-=$eachy) { imagerectangle($im, 0,($max[1]/2)+$y, $max[0],($max[1]/2)-$y, $black); } header("Content-type: image/jpeg"); imagejpeg($im,'',80); imagedestroy($im); ?> corey
Matt, I agree that drawing 100 boxes for a 10x10 square is ludicrous. However, if we're going to talk about the best way to draw it in GD, you're still off. Since a rectangle will draw two vertical lines in one draw, we should use it to our advantage. You can draw 5 rectangles that have the tops and bottoms outside of the image, and there you have your ten rows. Draw 5 more who's sides are out of the image and you have your columns. We just drew a 10x10 (you could do 11x11) grid in 10 draw operations. :) matt
Lets not do it Mr Benson's way OK! I'm sure if I had to draw a 10x10 grid on paper I wouldn't do it by drawing 100 individual squares, redrawing nearly half of the lines twice. I'd probably do it by drawing 11 vertical lines and 11 horizontal lines. function ImageGrid2(&$im,$startx,$starty,$width,$height,$xcols,$yrows,&$color) { $endy = $starty + $height * $yrows; for ( $x=0; $x <= $xcols; $x++ ) { $x1 = $startx + $width * $x; imageline ( $im, $x1, $starty, $x1, $endy, $color ); } $endx = $startx + $width * $xcols; for ( $y=0; $y <= $yrows; $y++ ) { $y1 = $starty + $height * $y; imageline ( $im, $startx, $y1, $endx, $y1, $color ); } } rogier
In addition to Corey's note, this is the kind of code he means. Note that I always draw an outer grid border, so drawing lines will always take 1 + ceil((rows+cols)/2) actions. For a 20X20 grid, this means 21 actions, a 10X25 grid takes 19 Actions <?php function draw_grid(&$img, $x0, $y0, $width, $height, $cols, $rows, $color) { //draw outer border imagerectangle($img, $x0, $y0, $x0+$width*$cols, $y0+$height*$rows, $color); //first draw horizontal $x1 = $x0; $x2 = $x0 + $cols*$width; for ($n=0; $n<ceil($rows/2); $n++) { $y1 = $y0 + 2*$n*$height; $y2 = $y0 + (2*$n+1)*$height; imagerectangle($img, $x1,$y1,$x2,$y2, $color); } //then draw vertical $y1 = $y0; $y2 = $y0 + $rows*$height; for ($n=0; $n<ceil($cols/2); $n++) { $x1 = $x0 + 2*$n*$width; $x2 = $x0 + (2*$n+1)*$width; imagerectangle($img, $x1,$y1,$x2,$y2, $color); } } //example $img = imagecreatetruecolor(300, 200); $red = imagecolorallocate($img, 255, 0, 0); draw_grid($img, 0,0,15,20,20,10,$red); header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?> have fun ;) eustaquiorangel
If you want an empty rectangle, I mean, just the borders, fill it first with the ImageFilledRectangle function with the background color and then draw it with this function.
jbenson
For those wanting a function to draw a grid I've created one. I hope this is the right place to post it. function ImageGrid(&$im,$startx,$starty,$width,$height,$xcols,$yrows,&$color) { for ( $x=0; $x < $xcols; $x++ ) { for ( $y=0; $y < $yrows; $y++ ) { $x1 = $startx + ($width * $x); $x2 = $startx + ($width * ($x+1)); $y1 = $starty + ($height * $y); $y2 = $starty + ($height * ($y+1)); ImageRectangle($im, $x1, $y1, $x2, $y2, $color); } } } // end function ImageGrid gros
1 rectangle = 4 lines. It's easier... administrador ensaimada sphoera punt com
<?php // With this function you will draw rounded corners rectangles with transparent colors. // Empty (not filled) figures are allowed too!! function draw_roundrectangle($img, $x1, $y1, $x2, $y2, $radius, $color,$filled=1) { if ($filled==1){ imagefilledrectangle($img, $x1+$radius, $y1, $x2-$radius, $y2, $color); imagefilledrectangle($img, $x1, $y1+$radius, $x1+$radius-1, $y2-$radius, $color); imagefilledrectangle($img, $x2-$radius+1, $y1+$radius, $x2, $y2-$radius, $color); imagefilledarc($img,$x1+$radius, $y1+$radius, $radius*2, $radius*2, 180 , 270, $color, IMG_ARC_PIE); imagefilledarc($img,$x2-$radius, $y1+$radius, $radius*2, $radius*2, 270 , 360, $color, IMG_ARC_PIE); imagefilledarc($img,$x1+$radius, $y2-$radius, $radius*2, $radius*2, 90 , 180, $color, IMG_ARC_PIE); imagefilledarc($img,$x2-$radius, $y2-$radius, $radius*2, $radius*2, 360 , 90, $color, IMG_ARC_PIE); }else{ imageline($img, $x1+$radius, $y1, $x2-$radius, $y1, $color); imageline($img, $x1+$radius, $y2, $x2-$radius, $y2, $color); imageline($img, $x1, $y1+$radius, $x1, $y2-$radius, $color); imageline($img, $x2, $y1+$radius, $x2, $y2-$radius, $color); imagearc($img,$x1+$radius, $y1+$radius, $radius*2, $radius*2, 180 , 270, $color); imagearc($img,$x2-$radius, $y1+$radius, $radius*2, $radius*2, 270 , 360, $color); imagearc($img,$x1+$radius, $y2-$radius, $radius*2, $radius*2, 90 , 180, $color); imagearc($img,$x2-$radius, $y2-$radius, $radius*2, $radius*2, 360 , 90, $color); } } ?> More functions at http://www.sphoera.com |
Change Languagegd_info getimagesize image_type_to_extension image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imageconvolution imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefilter imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imagegrabscreen imagegrabwindow imageinterlace imageistruecolor imagejpeg imagelayereffect imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp imagexbm iptcembed iptcparse jpeg2wbmp png2wbmp |