PHP画图的一些疑问

lingyue1012 2012-08-22 01:53:23



$src621 = imagecreate(200,200);
$yellow = imagecolorallocate($src621, 255, 255, 0);
$red = imagecolorallocate($src621, 255, 0, 0);
$green = imagecolorallocate($src621, 0, 255, 0);
imagerectangle($src621, 100, 50, 150, 150, $green);
imagefill($src621, 0, 0, $red);
header("Content-Type: image/png");
imagepng ($src621);
imagedestroy($src621);


结果:


疑问一、yellow颜色是怎么被画上去的?
疑问二、imagefill函数的中间2个参数有什么用?(自己测试发现,改变不起作用,如果改变大了,就没有填充颜色)

求牛人解答。谢谢!!
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingyue1012 2012-08-22
  • 打赏
  • 举报
回复
谢谢两位,明白啦。

再贴上测试后的例子:


$src621 = imagecreate(200,200);
$yellow = imagecolorallocate($src621, 255, 255, 0);
$red = imagecolorallocate($src621, 255, 0, 0);
$green = imagecolorallocate($src621, 0, 255, 0);
imagerectangle($src621, 50, 50, 150, 150, $green);
imagefill($src621, 55, 110, $red);
header("Content-Type: image/png");
imagepng ($src621);
imagedestroy($src621);



结果如下:



xuzuning 2012-08-22
  • 打赏
  • 举报
回复
对于 imagecreate 创建的资源,第一个创建的颜色为背景色
imagefill函数的中间2个参数是充填的起点坐标(原点),从这点出发直至边界,所有可到达的位置并且颜色与原点相同的都设为指定色

用于你在 imagefill 之前换了一个空心矩形(imagerectangle)所以该矩形的边缘是作为边界的
不被充填,自然也就露出背景了
franzhong 2012-08-22
  • 打赏
  • 举报
回复
注: 第一次对 imagecolorallocate() 的调用会填充背景色。
//imagefill($src621, 0, 0, $red);//注释掉这句你就看出来了
imagefile是点区域填充,左上角是(0,0)
为黄色,意思把所有红色(选区)填充为$red,像ps里的油漆筒
这个选区是关键,为啥里面的红色未被填充,那是因为
imagerectangle($src621, 100, 50, 150, 150, $green);//矩形的边框为绿色
这个green色隔开了红色,也就是里面给与外面红不在一个选区
不信你再改一下这句测试
imagefill($src621, 101, 51, $red);//这样点跑矩形里面了,选中的是矩形里面的红区域

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧