在 PHP 中, 函数用于绘制一个填充的多边形,它通常用于生成图形、制作动态图表或创建简单的形状。要正确使用这个函数,最关键的一点就是“坐标数组”的格式。本文将详细解释坐标数组的正确写法和注意事项。
</span><span><span>bool</span></span><span> </span><span><span class="function_ invoke__">imagefilledpolygon</span></span><span>(
resource </span><span><span>$image</span></span><span>,
</span><span><span>array</span></span><span> </span><span><span>$points</span></span><span>,
</span><span><span>int</span></span><span> </span><span><span>$num_points</span></span><span>,
</span><span><span>int</span></span><span> </span><span><span>$color</span></span><span>
)
参数说明:
最重要的一点:坐标数组必须是一个一维数组,按照 x1, y1, x2, y2, x3, y3... 的顺序排列,每两个元素表示一个顶点的坐标。
示例:
</span><span><span>$points</span></span><span> = [
</span><span><span>50</span></span><span>, </span><span><span>50</span></span><span>, </span><span><span>// 第一个顶点 (x1, y1)</span></span><span>
</span><span><span>150</span></span><span>, </span><span><span>50</span></span><span>, </span><span><span>// 第二个顶点 (x2, y2)</span></span><span>
</span><span><span>100</span></span><span>, </span><span><span>150</span></span><span> </span><span><span>// 第三个顶点 (x3, y3)</span></span><span>
];
</span><span><span>$num_points</span></span><span> = </span><span><span>3</span></span><span>;
然后调用函数:
</span><span><span class="function_ invoke__">imagefilledpolygon</span></span><span>(</span><span><span>$image</span></span><span>, </span><span><span>$points</span></span><span>, </span><span><span>$num_points</span></span><span>, </span><span><span>$color</span></span><span>);
注意事项:
</span><span><span>$image</span></span><span> = </span><span><span class="function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span>200</span></span><span>, </span><span><span>200</span></span><span>); </span><span><span>$white</span></span><span> = </span><span><span class="function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span>$image</span></span><span>, </span><span><span>255</span></span><span>, </span><span><span>255</span></span><span>, </span><span><span>255</span></span><span>); </span><span><span>$blue</span></span><span> = </span><span><span class="function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span>$image</span></span><span>, </span><span><span>0</span></span><span>, </span><span><span>0</span></span><span>, </span><span><span>255</span></span><span>); </span><span><span>// 填充背景</span></span><span> </span><span><span class="function_ invoke__">imagefill</span></span><span>(</span><span><span>$image</span></span><span>, </span><span><span>0</span></span><span>, </span><span><span>0</span></span><span>, </span><span><span>$white</span></span><span>); </span><span><span>// 定义三角形顶点</span></span><span> </span><span><span>$points</span></span><span> = [</span><span><span>50</span></span><span>, </span><span><span>50</span></span><span>, </span><span><span>150</span></span><span>, </span><span><span>50</span></span><span>, </span><span><span>100</span></span><span>, </span><span><span>150</span></span><span>]; </span><span><span>$num_points</span></span><span> = </span><span><span>3</span></span><span>; </span><span><span>// 绘制填充多边形</span></span><span> </span><span><span class="function_ invoke__">imagefilledpolygon</span></span><span>(</span><span><span>$image</span></span><span>, </span><span><span>$points</span></span><span>, </span><span><span>$num_points</span></span><span>, </span><span><span>$blue</span></span><span>); </span><span><span>// 输出图片</span></span><span> </span><span><span class="function_ invoke__">header</span></span><span>(</span><span><span>"Content-Type: image/png"</span></span><span>); </span><span><span class="function_ invoke__">imagepng</span></span><span>(</span><span><span>$image</span></span><span>); </span><span><span class="function_ invoke__">imagedestroy</span></span><span>(</span><span><span>$image</span></span><span>);
运行上述代码即可得到一个蓝色填充的三角形。
使用 imagefilledpolygon() 时,坐标数组必须为一维数组,并且顶点按照 x, y 顺序排列。$num_points 对应的是顶点数量而不是数组长度。掌握这个格式,你就可以顺利绘制任意多边形。