La dernière fois, j'ai parlé d'une méthode de dessin simple qui évite GD, puis j'ai utilisé GD pour dessiner le "dessin" le plus simple - une ligne droite.
Cette fois, je vais continuer à tracer une ligne droite vers le bas. Les parties expliquées en détail dans le dernier code ne seront pas répétées cette fois.
<?
Header("Type de contenu : image/png");
$im = ImageCréer (200, 100) ;
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255 192,0);
// Utilisons orange aujourd'hui.
// Exactement le même usage que la fonction imageline,
ImageDashedLine($im,0,100,199,100,$col_orn);
// Cela dessine une ligne pointillée.
// Faisons un test ci-dessous. Utilisé pour illustrer un problème.
$col_yel = ImageColorAllocate($im, 255 255,0);
//jaune.
ImageLine($im,0,99,199,99,$col_yel);
// Trace une ligne jaune sur le bord inférieur de l'image.
ImageLine($im,200,0,200,100,$col_orn);
// J'ai essayé de tracer une ligne orange à l'extrême droite de l'image, mais rien ne s'est produit.
// Cela montre que la plage de coordonnées d'une image d'une largeur de 200 et d'une hauteur de 100 est comprise entre (0,0) et (199,99).
ImagePNG($im);
ImageDestroy($im);
// Terminons d'abord cette section.
?>
Le prochain effet sera génial ! J'apprends aussi maintenant et je vends maintenant. PHP 4.0.6 et versions ultérieures ajoutent cette utilisation : vous pouvez dessiner des lignes dans des couleurs alternatives ! Un exemple est le suivant :
<?
Header("Type de contenu : image/png");
$im = ImageCréer (200, 100) ;
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255 192,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$style=array($col_red,$col_red,$col_black,$col_orn,$col_orn,$col_orn,$col_black);
ImageSetStyle($im, $style);
ImageLine($im, 0, 50, 199, 50, IMG_COLOR_STYLED
($im
);
ImageDestroy($im);
?>
Regardez l'effet.
Veuillez expliquer les trois lignes que j'ai séparées par des lignes vides. Un tableau $style est défini, dont les membres sont une série de couleurs ;
Ensuite, une fonction a été exécutée, puis IMG_COLOR_STYLED "color" a été utilisé pour tracer une "ligne droite" si magique——
Effet alterné rouge, noir, orange. Si vous regardez attentivement, vous constaterez que la séquence alternée de rouge, de noir et d’orange est ce que nous définissons.
La séquence des membres du tableau $style : rouge, rouge, noir, orange, orange, orange, noir, puis le cycle recommence...
Est-ce que tu comprends? Notez que cette fonction n'est supportée qu'après PHP 4.0.6.
Avec les bases du dessin au trait que j'ai expliquées en détail, je souhaite écrire les fonctions permettant de dessiner d'autres figures géométriques en une seule fois. Ce que je dois rappeler à tout le monde, c'est que quel que soit le type de figure géométrique que vous dessinez, il ne s'agit que de saisir plusieurs éléments de cette figure. Sans compter la couleur d'abord, les éléments des différents graphiques sont les suivants :
point, deux éléments : abscisse et
rectangle d'ordonnée, quatre éléments : abscisse et
arc d'ordonnée dans le coin supérieur gauche et le coin inférieur droit. Comprenez ainsi : l'arc peut inclure l'arc, Arc elliptique ; dessinez un arc et dessinez 360 degrés pour former un cercle ; dessinez un arc elliptique et dessinez 360 degrés pour former un cercle.
Il forme une ellipse ; il y a donc six éléments de cet arc : les coordonnées horizontales et verticales du point central, la longueur de l'axe horizontal, la longueur de l'axe vertical et les points de début et d'arrivée de l'arc.
Regardez l'exemple suivant.
<?
Header("Type de contenu : image/png");
$im = ImageCréer (200, 100) ;
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255 192,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageSetPixel($im,20,10,$col_orn);
// C'est un petit point, je me demande si on le voit ?
ImageRectangle($im,25,20,95,55,$col_blu);
// Rectangulaire bleu.
ImageArc($im,20,85,50,40,225,360,$col_grn);
// Arc elliptique vert, centre à (20,85), axe horizontal 50, axe vertical 40, 225 degrés à 360 degrés.
// On peut voir que les points de début et de fin de l'arc sont ici mesurés en angles.
// Il est calculé dans le sens des aiguilles d'une montre avec la direction horizontale droite égale à 0 degré.
ImageArc($im,160,60,40,40,0,360,$col_orn);
// Cercle complet orange. Tant que la longueur de l’axe horizontal est égale à la longueur de l’axe vertical, c’est un cercle parfait.
// On l'a tous appris au lycée : un cercle est un cas particulier d'ellipse !
//Enfin, dessinez un autre arc. Le centre du cercle peut-il être en dehors de l’image ?
ImageArc($im,160,140,240,240,0,360,$col_red);
// Peut!
ImagePNG($im);
ImageDestroy($im);
?>
Bien sûr, il est inévitable de peindre une certaine zone dans une certaine couleur lors du dessin. GD dispose de trois méthodes de coloration, l'une est la coloration de zones rectangulaires,
L'une consiste à colorer la zone fermée où se trouve le point spécifié, et l'autre consiste à colorer la zone entourée par la couleur spécifiée. Regardez les exemples suivants :
<?
Header("Type de contenu : image/png");
$im = ImageCréer (200, 100) ;
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255 192,0);
$col_yel = ImageColorAllocate($im, 255 255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im,5,40,50,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
//Ce qui précède est la première coloration. Dessinez directement le rectangle.
// J'ai délibérément entouré une petite zone de quatre rectangles de couleurs différentes.
// Utilisé pour illustrer la deuxième coloration.
ImagePNG($im);
ImageDestroy($im);
// Jetez un œil à l'effet.
?>
Puis :
<?
Header("Type de contenu : image/png");
$im = ImageCréer (200, 100) ;
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255 192,0);
$col_yel = ImageColorAllocate($im, 255 255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im,5,40,50,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
//Ce qui précède est la première coloration. Dessinez directement le rectangle.
// J'ai délibérément entouré une petite zone de quatre rectangles de couleurs différentes.
> // Utilisé pour illustrer la deuxième coloration.
ImageFill($im,70,70,$col_grn);
// C'est la deuxième coloration.
ImageRectangle($im,120,40,190,90,$col_grn);
// Dessinons un rectangle pour créer le cadre. En fait, n’importe quelle forme de bordure peut être utilisée comme cadre.
ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
// Peignez le rectangle vert en orange.
// Tant que le point spécifié est dans le périmètre de cette "boîte", cela n'a rien à voir avec la position du point dans la zone.
// Cette fonction fonctionne en réalité comme ceci :
//Commencez à partir du point spécifié et recherchez vers l'extérieur la limite de la couleur spécifiée. Si elle est trouvée, arrêtez.
// Si vous ne le trouvez pas, peignez les points de passage avec la couleur requise.
ImagePNG($im);
ImageDestroy($im);
// Jetez un œil à l'effet.
// Maintenant, l'image que nous avons faite est colorée, mais dans le navigateur, sur l'image,
// Clic droit->Propriétés : seulement 214 octets !
?>
Arrêtons-nous ici cette fois.