Hachures

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 863 fois - Téléchargée 29 fois

Contenu du snippet

Cette fonction permet de dessiner des hachures obliques dans une image existante.
L'image doit être créée avant l'appel à la fonction.
Les hachures sont dessinées dans un rectangle dont les coordonnées des angles NO et SE sont passées en paramètres.
Les hachures sont obliques, et la direction est passée en paramètre.
Tous les paramètres sont documentés.

Source / Exemple :


function hachures($im,$x1,$y1,$x2,$y2,$c,$pas,$ep,$dir)
//$im : image (identifiant de ressource)
//$x1,$y1 et $x2,$y2 sont les coordonnées des angles du rectangle
//$c : couleur (tableau contenant les composantes rvb)
//$pas : distance entre 2 hachures
//$ep : épaisseur d'une hachure
//$dir : direction des hachures (1 : SO/NE, 2 : NO/SE, 3 : les 2 (quadrillage))
{
  $l=$x2-$x1;
  $h=$y2-$y1;
  $t=$l+$h;
  $coul=imagecolorallocate($im, $c['r'], $c['v'], $c['b']);
  if ($dir!=2)
  {
    for ($i=0;$i<$t;$i+=$pas)
    {
       for ($e=0; $e<$ep; $e++)
       { $j=$i+$e; imageline($im,$x1+max(0,($j-$h)),$y1+min($j,$h),$x1+min($j,$l),$y1+max(0,($j-$l)),$coul); }
    }
  }
  if ($dir!=1)
  {
    for ($i=0;$i<$t;$i+=$pas)
    {
       for ($e=0; $e<$ep; $e++)
       { $j=$i+$e; imageline($im,$x1,$y1+($h-$j),$x1+$j,$y1+$h,$coul); }
    }
  }
}

Conclusion :


Exemple d'appel :

$im=imagecreate($L, $H);
hachures($im, 1, 1, $L-5, $H-1, array('r'=>128, 'v'=>128, 'b'=>255), 10, 3, 1);

Vous pouvez aussi créer l'image dans la fonction.

A voir également

Ajouter un commentaire Commentaires
Messages postés
45
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
5 septembre 2004

C'est très joli comme rendu, et le code est propre (mais c'est vrai que quelques valeurs par défaut ... font défaut)

9/10
FReD
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Avec $im, tu peux savoir avec de belles fonctions la grandeur de l'image...
Il est vrai que si on ne veut pas hacher toute l'image cela peut s'avérer utile...
Mais il serait alors bien de mettre ces paramètres en dernier dans les arguments et leur mettre un défaut à 0.
S'ils sont tous à 0, tu hache toute l'image, sinon tu haches la forme passée en argument.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.