現在の位置: ホーム> 最新記事一覧> ImageOpenPolygon()の閉鎖効果に対する座標順序の効果

ImageOpenPolygon()の閉鎖効果に対する座標順序の効果

M66 2025-06-02

PHPを使用して画像を処理する場合、 ImageOpenPolygon()は、オープンポリゴンパスを描画できる非常に実用的な機能です(つまり、ヘッドとテールは自動的に接続されていません)。しかし、多くの友人がそれを使用するときに困惑するかもしれません:

この問題を把握するために、詳細なテストを行いました。以下を見てみましょう。

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()の小さな詳細を迅速に理解し、習得するのに役立つことを願っています!