Position actuelle: Accueil> Derniers articles> L'effet de l'ordre des coordonnées sur l'effet de fermeture dans imageOpenPolygon ()

L'effet de l'ordre des coordonnées sur l'effet de fermeture dans imageOpenPolygon ()

M66 2025-06-02

Lorsque vous utilisez PHP pour traiter les images, ImageOpenPolygon () est une fonction très pratique qui peut ouvrir des chemins de polygone ouverts (c'est-à-dire que la tête et la queue ne sont pas automatiquement connectées). Cependant, de nombreux amis peuvent être perplexes lors de l'utilisation:

Afin de comprendre ce problème, nous avons effectué des tests détaillés. Jetons un coup d'œil ci-dessous.

Qu'est-ce que ImageOpenPolygon ()

Dans la bibliothèque GD de PHP, ImageOpenPolygon () est utilisé pour tracer des lignes de polygone ouvertes. Contrairement à ImagePolygon () , il ne connecte pas automatiquement le premier point et le dernier point.

Exemples d'utilisation de base:

 <?php
// Créer une toile
$image = imagecreatetruecolor(400, 400);

// Définir la couleur de fond sur blanc
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

// Définissez la couleur de la ligne sur le bleu
$blue = imagecolorallocate($image, 0, 0, 255);

// Définir un tableau de points(Dans le sens des aiguilles d&#39;une montre)
$points = [
    50, 50,  // Le premier point
    150, 50, // Le deuxième point
    150, 150,// Le troisième point
    50, 150  // Le quatrième point
];

// Dessiner des polygones ouverts
imageopenpolygon($image, $points, count($points) / 2, $blue);

// Image de sortie
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

Après avoir exécuté ce code, vous verrez un quadrilatère ouvert en forme de U, où il n'y a pas de connexion entre le point de départ et le point final .

Modifier l'ordre des coordonnées pour voir l'effet

Ensuite, nous ajustez l'ordre des points dans le sens antihoraire :

 $points = [
    50, 50,  // Le premier point
    50, 150, // Le deuxième point
    150, 150,// Le troisième point
    150, 50  // Le quatrième point
];

Exécutez à nouveau, la forme dessinée est toujours ouverte, sauf que les lignes se déplacent différemment .

Résumé 1 :

  • L'ordre des coordonnées ne fait pas fermer la figure .

  • L'ordre des coordonnées affecte uniquement l'ordre de dessin des lignes (c'est-à-dire que la direction des lignes changera).

Et si je veux fermer manuellement?

Si vous voulez que la figure soit fermée, vous devez ajouter manuellement le premier point à la fin du tableau, par exemple:

 $points = [
    50, 50,
    150, 50,
    150, 150,
    50, 150,
    50, 50 // 再加一次Le premier point
];

De cette façon, la figure dessinée par ImageOpenPolygon () sera connectée à la fin, et elle ressemble à un polygone fermé!

Exemple d'aperçu du diagramme

Pour faciliter la visualisation des différents effets, voici une exemple d'adresse d'image:

(Si vous souhaitez le générer vous-même, vous pouvez également l'essayer directement avec le code PHP ci-dessus.)

résumé

  • ImageOpenPolygon () n'est pas fermé par défaut, quel que soit l'ordre des coordonnées.

  • Si vous devez fermer, vous devez ajouter le premier point à la fin .

  • L'ordre des coordonnées affecte la direction du dessin de ligne , et non des comportements fermés.

J'espère que cette explication pratique peut vous aider à comprendre et à maîtriser rapidement les petits détails de ImageOpenPolygon () dans le développement réel!