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, // 2番目のポイント
150, 150,// 3番目のポイント
50, 150 // 4番目のポイント
];
// 開いたポリゴンを描きます
imageopenpolygon($image, $points, count($points) / 2, $blue);
// 出力画像
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
このコードを実行した後、出発点とエンドポイントの間に接続がないU字型の開いた四辺形が表示されます。
次に、ポイントの順序を反時計回りに調整します。
$points = [
50, 50, // 最初のポイント
50, 150, // 2番目のポイント
150, 150,// 3番目のポイント
150, 50 // 4番目のポイント
];
再び実行すると、描かれた形状はまだ開いていますが、線の動きが異なることを除いて。
要約1 :
座標順序では、図が閉じません。
座標順序は、線の描画順序のみに影響します(つまり、行の方向が変わります)。
フィギュアを閉じてみたい場合は、アレイの最後に最初のポイントを手動で追加する必要があります。
$points = [
50, 50,
150, 50,
150, 150,
50, 150,
50, 50 // 再加一次最初のポイント
];
このようにして、 ImageOpenPolygon()によって描かれた図は端に接続され、閉じたポリゴンのように見えます!
さまざまな効果の表示を容易にするために、サンプル画像アドレスを次に示します。
(自分で生成したい場合は、上記のPHPコードで直接試すこともできます。)
ImageOpenPolygon()は、座標順序に関係なく、デフォルトで閉じられていません。
閉じる必要がある場合は、最後に最初のポイントを追加する必要があります。
座標順序は、閉じた動作ではなく、線の描画方向に影響します。
この実用的な説明が、実際の開発におけるImageOpenPolygon()の小さな詳細を迅速に理解し、習得するのに役立つことを願っています!