在使用PHP 處理圖像時, imageopenpolygon()是一個非常實用的函數,可以繪製出開放的多邊形路徑(即首尾不自動連接)。不過,很多朋友在使用它時可能會疑惑:
為了搞清楚這個問題,我們做了詳細的實測。下面帶大家一起看看。
在PHP 的GD 庫中, imageopenpolygon()用於繪製開放的多邊形線條。和imagepolygon()不同的是,它不會自動連接第一個點和最後一個點。
基本使用示例:
<?php
// 創建畫布
$image = imagecreatetruecolor(400, 400);
// 設置背景色為白色
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// 設置線條顏色為藍色
$blue = imagecolorallocate($image, 0, 0, 255);
// 定義點數組(順時針方向)
$points = [
50, 50, // 第一個點
150, 50, // 第二個點
150, 150,// 第三個點
50, 150 // 第四個點
];
// 繪製開放多邊形
imageopenpolygon($image, $points, count($points) / 2, $blue);
// 輸出圖片
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
運行這段代碼後,你會看到一個U 形的開放四邊形,其中起點和終點之間不會連線。
接下來我們把點的順序調整成逆時針方向:
$points = [
50, 50, // 第一個點
50, 150, // 第二個點
150, 150,// 第三個點
150, 50 // 第四個點
];
再次運行,繪製出的形狀依然是開放的,只不過線條的走向不同。
總結一:
坐標順序不會導致圖形閉合。
坐標順序只影響線條的繪製順序(也就是說,線條的走向會改變)。
如果想讓圖形看起來閉合,需要手動把第一個點再加一遍到數組末尾,比如這樣:
$points = [
50, 50,
150, 50,
150, 150,
50, 150,
50, 50 // 再加一次第一個點
];
這樣imageopenpolygon()繪製出來的圖形就會首尾連接,看起來就是一個閉合的多邊形了!
為了方便查看不同效果,這裡放一個示例圖地址:
(如果你想要自己生成,也可以直接用上面的PHP 代碼試試看哦。)
imageopenpolygon()默認不閉合,無論坐標順序如何。
如果需要閉合,需要自己在最後加上第一個點。
坐標順序影響的是線條繪製的走向,不是閉合行為。
希望這篇實測講解,能幫你在實際開發中快速理解和掌握imageopenpolygon()的小細節!