IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Hachurer un champ image


Sujet :

Contribuez

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut Hachurer un champ image
    C'est pas long, c'est pas compliqué, mais c'est hachement pratique.

    La procédure comporte 4 paramètres et 3 optionnels :

    X0, Y0, X1, Y1 désignent l'aire que vous voulez hachurer.
    nCouleur désigne la couleur du trait (noir par défaut)
    nLargeur_trait désigne la largeur du trait de hachure (1 pixel par défaut)
    nEcart est l'écart entre le centre de chaque trait (10 pixels par défaut)

    ATTENTION : dans la procédure il n'y a pas de "ddébutdessin"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    PROCEDURE Hachurage(X0 est un entier, Y0 est un entier, X1 est un entier, Y1 est un entier, nCouleur est un entier = 0, nLargeur_trait est un entier = 1, nEcart est un entier = 10)
     
    // Hachurage de la zone
     
    i est un entier
    nMaxix, nMaxiY est un entier
     
    nMaxix = (X1 - X0) / nEcart
    nMaxiY = (Y1 - Y0) / nEcart
     
    nLX0, nLX1, nLY0, nLY1 sont des entiers
     
    // Cas où la largeur de l'aire est plus grande que la hauteur
    SI (X1 - X0) > (Y1 - Y0) ALORS
     
    	POUR i = 0 A nMaxiY
    		nLX0 = X0
    		nLY0 = Y1 - i*nEcart
    		nLX1 = Y1 - i*nEcart - Y0 + X0
    		nLY1 = Y0
    		dLigne(nLX0, nLY0, nLX1, nLY1, nCouleur,nLargeur_trait)
    	FIN
     
    	POUR i = 1 A nMaxix
    		nLX0 = X0 + i*nEcart
    		nLY0 = Y1
     
    		SI (X0 + i*nEcart) < (X1 - Y1 + Y0) ALORS
    			nLX1 = X0 + Y1 - Y0 + i*nEcart
    			nLY1 = Y0
    		SINON
    			nLX1 = X1
    			nLY1 = Y1 - (X1 - (X0 + i*nEcart))
    		FIN
    		dLigne(nLX0, nLY0, nLX1, nLY1, nCouleur,nLargeur_trait)
    	FIN
     
    	// Cas où la hauteur de l'aire est plus grande que la largeur	
    SINON	
     
    	POUR i = 0 A nMaxiY
    		nLX0 = X0
    		nLY0 = Y1 - i*nEcart
     
    		SI (Y1 - (X1 - X0) - i*nEcart) > Y0 ALORS
    			nLX1 = X1
    			nLY1 = Y1 - (X1 - X0) - i*nEcart
    		SINON
    			nLX1 = X0 + (Y1 - (Y0 + i*nEcart))
    			nLY1 = Y0				
    		FIN
    		dLigne(nLX0, nLY0, nLX1, nLY1, nCouleur,nLargeur_trait)
    	FIN
     
    	POUR i = 1 A nMaxix
    		nLX0 = X0 + i*nEcart
    		nLY0 = Y1
    		nLX1 = X1 
    		nLY1 = Y1 - (X1 - X0) + i*nEcart
    		dLigne(nLX0, nLY0, nLX1, nLY1, nCouleur,nLargeur_trait)
    	FIN
    FIN
    Mieux vaut un petit lien qu'un long discours.

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Salut,

    Quel est l'intérêt par rapport à l'utilisation de dFond(..) ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    dFond peut hachurer mais j'ai l'impression qu'il ne le fait que pour tout le fond du champ. Dans mes paramètres je définis l'aire de la zone à hachurer.
    Ça sert si tu veux hachurer différentes zones d'un champ image et de façon différente.

    J'ai pas mis l'inclinaison des hachures mais si y a besoin ça doit pouvoir se rajouter de la même manière que dFond avec un petit SELON CAS.
    Mieux vaut un petit lien qu'un long discours.

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    dFond permet d'initialiser le fond des prochains dessins qui vont être effectués.
    C'est-à-dire qu'après un dFond, tu as généralement un dRectangle(.), dCercle(..) qui va être écrit, ce qui te permet de gérer l'endroit où les hachures vont apparaître.

    L'inclinaison des hachures est aussi gérée et il y en a pour tous les goûts.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Je ne dois pas savoir utiliser dFond parce que quand je mets une couleur dans dRectangle, les hachures de dFond n'apparaissent pas.
    Mieux vaut un petit lien qu'un long discours.

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Il faut utiliser dRectangle sans la couleur, seules les coordonnées sont obligatoires.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Si il n'est pas possible de dessiner une forme avec une couleur de fond et ensuite y appliquer des hachures avec une autre couleur, il est possible que ma procédure serve à quelque chose.
    Mieux vaut un petit lien qu'un long discours.

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Pour cela, tu fais :
    - un dRectangle() avec le fond voulu ;
    - un dFond() avec les hachures ;
    - un autre dRectangle() avec les mêmes coordonnées pour hachurer le premier rectangle.

    Ca n'enlève en rien le fait que tu te sois décarcasser à le faire à la mano

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    444
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 444
    Points : 428
    Points
    428
    Par défaut
    Lol trop compliqué comme solution pour moi. Je suis un feignant pur et dur. Je fais un rectangle + mes hachures et hop c'est fini.
    Mieux vaut un petit lien qu'un long discours.

Discussions similaires

  1. [VB.NET]Champ image dans base de donnée access
    Par dankes dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/10/2005, 15h31
  2. [VB.NET]Champ image
    Par dankes dans le forum Access
    Réponses: 3
    Dernier message: 06/10/2005, 15h26
  3. [C#] Récup champ IMAGE SQLServer avec un DataSet Typé
    Par SoaB dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/07/2005, 14h53
  4. Champ Image sous oracle
    Par smazaudi dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/06/2005, 08h56
  5. [FORMS] Champ image non basé
    Par macharius dans le forum Forms
    Réponses: 5
    Dernier message: 08/03/2005, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo