Lors du dessin de graphiques à l'aide de la bibliothèque GD de PHP, ImageOpenPolygon () est une fonction très pratique qui nous aide à entraîner des lignes de polygone ouvertes (non clôturées). Cependant, les lignes tracées par défaut peuvent être plus minces et ne sont pas accrocheuses dans certains scénarios avec des exigences visuelles élevées.
Pour rendre les lignes de polygone plus épaisses et plus claires, la fonction d'imagestHickness () est utile. Cet article présentera comment dessiner un effet polygone qui est plus conforme aux besoins grâce à l'utilisation de ces deux fonctions.
ImageOpenPolygon (Ressource $ image, array $ points, int $ num_points, int $ couleur): bool
Cette fonction dessine un chemin de polygone ouvert sur l'image en fonction de l'ensemble de points donné.
ImageSetThickness (Ressource $ image, int $ épaisseur): bool
Cette fonction est utilisée pour régler l'épaisseur de la ligne lors du dessin d'une ligne droite.
Remarque : ImageSetThickness () définit l'épaisseur globale du dessin en ligne droite, qui affectera tous les dessins de lignes suivantes.
Voici un exemple complet pour montrer comment dessiner un pentagone avec des lignes épaisses.
<?php
// Créer une toile
$image = imagecreatetruecolor(400, 400);
// Attribuer des couleurs
$white = imagecolorallocate($image, 255, 255, 255);
$blue = imagecolorallocate($image, 0, 0, 255);
// Fond rempli de blanc
imagefill($image, 0, 0, $white);
// Définissez les sommets d'un Pentagone
$points = [
200, 50, // sommet1
300, 150, // sommet2
250, 300, // sommet3
150, 300, // sommet4
100, 150 // sommet5
];
// Régler l'épaisseur de la ligne
imagesetthickness($image, 5);
// Dessiner des polygones ouverts
imageopenpolygon($image, $points, count($points), $blue);
// Image de sortie au navigateur
header('Content-Type: image/png');
imagepng($image);
// Libérer les ressources
imagedestroy($image);
?>
Dans l'exemple ci-dessus, ImageSetThickness ($ Image, 5); Réglez la largeur de ligne sur 5 pixels, de sorte que les polygones dessinés sont plus épais que la ligne par défaut de 1 pixel, et l'effet visuel est considérablement amélioré.
Ajustez l'épaisseur : si vous voulez que différents segments de ligne aient des épaisseurs différentes, vous devez définir dynamiquement ImagesThickness () avant de dessiner chaque ligne. Cependant, pour les fonctions de dessin par lots telles que ImageOpenPolygon () , elles ne peuvent être définies que uniformément.
Optimisation de sortie : si vous souhaitez enregistrer les graphiques générés sur le serveur, vous pouvez utiliser ImagePng ($ Image, '/path/to/save/polygon.png'); puis référencez-le sur la page, par exemple:
<img src="https://m66.net/path/to/save/polygon.png" alt="Exemple de polygones de ligne épais">
Évitez de se déchaîner : pour rendre les lignes épaisses plus lisses, vous pouvez utiliser des tailles plus grandes lors de la création de toile et indirectement anti-aliasing en élargissant la sortie.
En combinant ImageSetThickness () et ImageOpenPolygon () , nous pouvons facilement dessiner des polygones plus épais et plus accrocheurs, ce qui est très utile pour générer des scènes telles que les diagrammes schématiques, les cartes de jeu, les visualisations des données, etc. La maîtrise de la combinaison de ces deux améliorera considérablement votre flexibilité et votre expressivité dans le traitement graphique.