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

WinDev Discussion :

Manipulation d'une image


Sujet :

WinDev

  1. #1
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut Manipulation d'une image
    Bonjour à Tous,

    Je commence la manipulation d'une image cliquable et je rencontre un problème.
    Malgré l'aide WD, je n'arrive pas à maitriser le problème suivant:

    1- J'ai créé une image
    2- En fond d'image, j'ai inséré un plan
    3- J'ai écrit le code suivant:

    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
    //TAILLE DE LA POLICE
    liFontSize est un entier = 8
    dDébutDessin(IMG_Image1)
    // Déclaration de la couleur et du style par défaut des différents tracés
    dStylo(Noir, 3)
    dPolice("Arial",liFontSize,iNormal,0)
    //PLAN DU CADASTRE
    dRectangle(370,25,660,210, Transparent, Noir) //R-RECEP
    dRectangle(660,25,690,120, Transparent, Noir)//R-BOU-PIK
    dRectangle(555,260,660,350, Transparent, Noir)//R-CLI-PIK
    dRectangle(455,260,555,305, Transparent, Noir)//R-BOU-RES
    dRectangle(455,305,555,350, Transparent, Noir)//R-CLI-RES
    dRectangle(250,170,370,250, Transparent, Noir)//R-BOU-PRE
    dRectangle(250,90,370,170, Transparent, Noir)//R-CLI-PRE
    //ZONES EXPEDITIONS
    dRectangle(55, 70, 115, 130, Transparent, RougeFoncé) //R-EXPED-CLIENTS
    dRectangle(175, 70, 115, 130, Transparent, RougeFoncé)//R-EXPED-BOUTIQUES

    Jusqu'à là, cela fonctionne.

    Mais je souhaite faire apparaitre le nom de la zone lorsque je clic dessus.
    Et je n'arrive pas à trouver la commande adéquate; J'ai tenté ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    x, y sont des entiers
    x = SourisPosX()
    y = SourisPosY()
    // Code de clic de IMAGE1
     
    SI x > y ALORS
    	LIB_Libellé1 = "R-EXPED-CLIENTS"
    SINON
    	LIB_Libellé1 = "R-EXPED-BOUTIQUES"
    FIN
    Mais je ne vois pas comment l'intégrer pour chaque zones dessinées

    Par avance merci pour votre aide
    Bonne journée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  2. #2
    Membre Expert
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Si j'ai bien comprtis, le but est de retouver dans quel rectangle tu as cliqué.

    Je présume que ceux ci ne se chevauchent pas.

    A ta place, je ferai déclarerais 4 tableaux ou j'inscrirais chacune des coordonnées (x-mini, x-maxi, y-mini et y-maxi) de chacun des rectangles, ensuite je les dessinerais.

    puis lors du clicage si x est compris entre x-mini et x-maxi et que u est compris entre y-mini et y-maxi tu as gagné.

  3. #3
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonjour Mogway,

    En effet, après contrôle, rien ne ce chevauche.
    J'ai bien compris ce que tu dit, sauf les tableaux.
    En effet, je vais finir par avoir à peut prêt 150 zones dans mon cadastre.

    Aurait tu la gentillesse de m'éclairer sur ce point
    Merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Bonjour,

    L'esprit est de :

    - déclarer/mémoriser les zones de la carte
    - dessiner les zones sur la carte
    - à chaque clic, retourner la zone correspondante aux coordonnées cliquées

    Si vous dessinez directement les zones sur la carte sans les mémoriser (BDD, variable tableau), vous ne serez pas capable de dire quelle zone a été cliquée.

    Pour ça je propose les structures suivantes :

    - Le plan qui contient x zones
    - La zone qui est défini par 2 points et un libellé
    - Le point qui est défini par 2 coordonnées x,y

    L'implémentation suivante :

    Classe Point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CPoint est une classe
    	X est un entier
    	Y est un entier
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PROCEDURE Constructeur(local pX est un entier, local pY est un entier)
     
    	:X = pX
    	:Y = pY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FONCTION EstDansRectangle(poRectangle est un CRectangle dynamique)
     
    	RENVOYER = ((:X >= poRectangle:oPoint1:X ET :X <= poRectangle:oPoint2:X) ET (:Y >= poRectangle:oPoint1:Y ET :Y <= poRectangle:oPoint2:Y))




    Classe Rectangle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CRectangle est une classe
    	oPoint1 est un CPoint dynamique
    	oPoint2 est un CPoint dynamique
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROCEDURE Constructeur(poPoint1 est un CPoint dynamique, poPoint2 est un CPoint dynamique)
     
    	:oPoint1 = poPoint1 
    	:oPoint2 = poPoint2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROCEDURE Dessiner()
     
    	dRectange(:oPoint1:X, :oPoint1:Y, oPoint2:X, oPoint2:Y)




    Classe Zone plan rectangle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CZonePlanRectangle est une classe
    	hérite de CRectangle
     
    sLibelle est une chaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROCEDURE Constructeur(poPoint1 est un CPoint dynamique, poPoint2 est un CPoint dynamique, LOCAL psLibelle est une chaine)
    	Constructeur CRectangle(poPoint1, poPoint2)
     
    	:sLibelle = psLibelle




    Classe plan
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CPlan est une classe
    	sChampImage est une chaine
     
    	taboZonePlan est un tableau de 0 CZonePlanRectangle dynamique
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROCEDURE Constructeur(LOCAL psChampImage est une chaine)
     
    :sChampImage = psChampImage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROCEDURE AjouterZonePlanRectangle(poZoneRectangle est un CZonePlanRectangle dynamique)
     
    tableauAjoute(:taboZonePlan, poZoneRectangle)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCEDURE Dessiner()
     
    dDébutDessin(:sChampImage)
     
    dStylo(Noir, 3)
    dPolice("Arial",liFontSize,iNormal,0)
     
    oZonePlanRectangle est un CZonePlanRectangle dynamique
    POUR TOUT ELEMENT oZonePlanRectangle DE :taboZonePlan
    	oZonePlanRectangle:Dessine()
    FIN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    FONCTION ZoneRectangleDepuisPoint(poPoint est un CPoint dynamique)
     
    oZonePlanRectangle est un CZonePlanRectangle dynamique
    POUR TOUT ELEMENT oZonePlanRectangle DE :taboZonePlan
    	SI poPoint:EstDansRectangle(oZonePlanRectangle) ALORS
    		RENVOYER oZonePlanRectangle
    	FIN
    FIN




    Exemple de code

    Code de déclaration de la fenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Construction de l'image 
    oPlan est un CPlan(IMG_Image1)
     
    oPlan:AjouterZonePlanRectangle(allouer un CZonePlanRectangle(allouer un CPoint(370,25), allouer un CPoint(660,210), "R-RECEP"))
    ...
    ...
     
    oPlan:Dessine()
    //Code Clic sur image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    oPointClic est un CPoint(SourisPosX(), SourisPosY())
    oZoneCliquee est un CZonePlanRectangle dynamique = oPlan:ZoneRectangleDepuisPoint(oPointClic)
     
    SI oZoneCliquee <> Null ALORS
    	Info("Vous avez cliqué sur la zone : " + oZoneCliquee:sLibelle)
    FIN

  5. #5
    Membre Expert
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Si tu mets tout dans des tableaux il te suffira de parcourir tes tableaux

    Ainsi au lieu d'ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dRectangle(370,25,660,210, Transparent, Noir) //R-RECEP
    dRectangle(660,25,690,120, Transparent, Noir)//R-BOU-PIK
    dRectangle(555,260,660,350, Transparent, Noir)//R-CLI-PIK
    tu ecriras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    T1[1] = 370
    T2[1] =   25
    T3[1] = 660
    T4[1] = 210
     
    Pour i = 1 à n
        dRectangle(T1[i], T2[i], T3[i], T4[i], Transparent, Noir)
    fin
    Puis idem pour les test de la position de la souris

  6. #6
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Mogway,

    Avant tout, je ne sais quoi dire autre que merci

    Maintenant, je vais analyser tout cela et je vais recommencer ma programmation.
    De là, je ne manquerais pas de revenir vers vous.

    Vmolines,

    Force de constater que tes explications sont exceptionnelles.
    J'ai décidé de tester également ta solution, qui comme le dit Mogway est très complètes.

    Je saurais revenir vous dire la suite....

    Encore merci
    Et très bonne journée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  7. #7
    Membre Expert
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Euh.. oui

    La solution de vmolines est a priori meilleure que la mienne. la mienne etant simple voire simpliste et la sienne plus complete et orientée objet.

    Maintenant je prefere tout de même la mienne si c'est la sa seule utilisation. Si a l'avenir il y en a d'autres, la solution la plus complete risque de s'avérer la meilleure.

  8. #8
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonsoir Vmolines
    Et bonsoir à Tous,

    Je suis sur le point de terminer la programmation des classes et procédures.
    Mais je bloque sur un point:

    En effet, Windev ne reconnait pas le mot FONCTION.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FONCTION est un mot clé WLangage, et son utilisation dans ce cas est incorrecte
    J'ai regardé dans l'aide, mais je n'ai rien trouver comme palliatif à cette erreur.

    Pourriez vous m'expliquer la signification de cette fonction

    Par avance merci

    PS: Pour mémoire
    WD14
    Serveur : SQLServer 2005

    Bonne soirée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonsoir,
    Citation Envoyé par Raptor92 Voir le message
    [...]
    En effet, Windev ne reconnait pas le mot FONCTION.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FONCTION est un mot clé WLangage, et son utilisation dans ce cas est incorrecte
    J'ai regardé dans l'aide, mais je n'ai rien trouver comme palliatif à cette erreur.

    Pourriez vous m'expliquer la signification de cette fonction
    Dans le WLangage, le mot-clé FONCTION est un synonyme du mot-clé PROCEDURE.
    Bref, le développeur l'utilise "intentionnellement" pour déclarer qu'une procédure doit retourner une valeur.
    Mais on peut aussi très bien utiliser le mot-clé PROCEDURE et renvoyer une valeur (tu fais comme tu aimes ).

    Pour ce qui te concerne, je verrai plutôt une facétie de l'éditeur.
    Commence par remplacer FONCTION par PROCEDURE et recompile le projet.
    _

  10. #10
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonjour à Tous,

    =JBO=

    J'ai tenté ce que tu m'a amicalement proposé, à savoir:

    - Remplacer Fonction par procédure
    - Recompiler le projet

    Mais cela m'indique le même message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    PROCEDURE Constructeur(LOCAL pX est un entier, LOCAL pY est un entier)
     
    	:X = pX
    	:Y = pY
     
    	PROCEDURE EstDansRectangle(poRectangle est un CRectangle dynamique)
     
    	RENVOYER =((:X >=poRectangle:oPoint1:X ET :X <+ poRectangle:oPoint2:X) ET (:Y >= porectangle:oPoint1:Y ET :Y <= poRectangle:oPoint2:Y))
    Bonjour Vmolines,

    Pensez vous que je commets une erreur de syntaxe ou de positionnement de mon code.

    Je viens de penser à une chose, ne me fallait il pas interpréter le chapitre FONCTION comme une procédure à part entière, à savoir:

    1- 1ere procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROCEDURE Constructeur(LOCAL pX est un entier, LOCAL pY est un entier)
     
    	:X = pX
    	:Y = pY
    2- 2eme procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FONCTION EstDansRectangle(poRectangle est un CRectangle dynamique)
    RENVOYER =((:X >=poRectangle:oPoint1:X ET :X <+ poRectangle:oPoint2:X) ET (:Y >= poRectangle:oPoint1:Y ET :Y <= poRectangle:oPoint2:Y))
    Auquel cas, en effet, je n'ai plus d'erreur


    Très bonne journée à Tous
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Bonjour,

    Le code est découpé en classes, vous devez donc passer par la création de classe via l'édteur si ce n'est pas déjà le cas.

    Le constructeur est automatiquement déclaré à la création de la classe, il faut le compléter.

    Pour les "procédures de classes", aussi appelées méthodes, il faut les ajouter une à une dans la classe respective.

    Ici vous aviez effectivement déclaré "EstDansRectangle" à l'intérieur du constructeur de CPoint. Exemple pour Cpoint dans l'ordre :

    - Créer la classe CPoint
    - Compléter "CPoint est une classe"
    - Compléter le constructeur (paramètres et code)
    - Créer la méthode "EstDansRectangle"
    - Compléter le code

    Puis faites de même pour les autres classes.

  12. #12
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonjour Vmolines,

    En fait, j'ai compris ce matin le problème de la fonction, et c'est exactement ce que j'ai fait.

    J'ai un dernier problème sur le champ "sChampImage"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCEDURE Dessiner()
     
    dDébutDessin(:sChampImage)
     
    dStylo(Noir,3)
    dPolice("Arial",8,iNormal,0)
     
    oZonePlanRectangle est une CZonePlanRectange dynamique
    POUR TOUT ELEMENT pclOZonePlanRectange DE :tabTaboZonePlan
    	oZonePlanRectangle:Dessiner()
     
    FIN
    Voici l'erreur générée

    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
    Erreur à la ligne 3 du traitement Méthode Dessiner.
    Vous avez appelé la fonction dDébutDessin.
    Le passage du paramètre 1 a provoqué une erreur.
    Le champ C:\Mes Projets\T.D.S. Logistics\Image6.jpg est inconnu.
     
    Informations techniques
     
    Projet : T_D_S_ Logistics
     
    Dump de l'erreur du module <WD140VM.DLL> <14.00Gp>.
     
    - Appel WL :
    Traitement de <CPlan.Dessiner>, ligne <3>, thread <0>
    Fonction <dDébutDessin>, n° de syntaxe <0>
     
    - Niveau : erreur fatale (EL_FATAL)
     
    - Code erreur : 1017
     
    - Code erreur WD55 : 0
     
    - Pas de code d'erreur système
     
    - Pas de message d'erreur système
     
    - Que s'est-il passé ?
    Le passage du paramètre 1 a provoqué une erreur.
    Le champ C:\Mes Projets\T.D.S. Logistics\Image6.jpg est inconnu.
     
    - Pas d'info de debug
     
    - Infos attachées :
    EIT_PILEWL :
    Méthode Dessiner (CPlan.Dessiner), ligne 3
    Déclarations globales de Menu_Test (Menu_Test), ligne 6
    EIT_COMPOSANT :
     
    EIT_DATEHEURE : 23/10/2009 08:27:08
     
    - Identifiant dans le .err : 1017
     
     
    Assistance
    Je comprends bien sur ce que cela veut dire, mais je ne sais pas la résoudre.

    Afin que vous puissiez m'aider, il faut savoir que dans le champ image de la fenêtre, je fait apparaître le un image jpg représentant le plan du batîment

    Par avance merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Il y a une petite erreur dans mon code de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //Construction de l'image 
    oPlan est un CPlan(IMG_Image1..nom)
    ...
    Pourquoi ..Nom, c'est que Windev ne gère pas le passage de champ directement en paramètre de fonction. C'est pourquoi il faut passer le nom du champ. "IMG_Image1" ou IMG_Image1...nom.

    Ensuite ça devrait marcher à quelques bricoles près.

  14. #14
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Vmolines,

    Bien, ça, c'est fait et surtout compris.

    J'ai commencé la phase test, de là, je tente de régler une erreur car cela m'indique que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Erreur à la ligne 10 du traitement Méthode Dessiner.
    L'objet dynamique oZonePlanRectangle n'a pas encore été alloué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    oZonePlanRectangle est une CZonePlanRectange dynamique
    POUR TOUT ELEMENT oZonePlanRectange DE :tabTaboZonePlan
    	oZonePlanRectangle:Dessiner()
     
    FIN
    Je vérifie si je n'ai pas une erreur de synatxe

    Mais c'est sympa, parce que, même si je m'ai du temps à coder, j'en profite pour analyser le tout avant.
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    oZonePlanRectangle est une CZonePlanRectange dynamique
    POUR TOUT ELEMENT oZonePlanRectange DE :tabTaboZonePlan
    	oZonePlanRectangle:Dessiner()
     
    FIN
    Erreur sur POUR TOUT ELEMENT oZonePlanRectange DE :tabTaboZonePlan -> c'est rectangle

    L'intérêt des classes est de bien organiser les données et les traitements associés. Cette organisation permet une maintenance plus facile, un code plus clair et des évolutions facilitées.

    Dans le futur, imaginons que vous ayez des zones qui ne soient pas forcément rectangle.

    On créera une classe intermédiaire CZone. CZoneRectangle héritera de CZone. Une nouvelle classe CZonePolygone sera créée et héritera de CZone. Les modifications seront très localisées et le code ne changera pas beaucoup.

  16. #16
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Vmolines,

    Bon, si en plus ont ne peut plus faire de faute d'orthographe.....

    Blague à part, ont à toujours tendance à remercier les intervenants à la fin d'un message.

    Pour le coût, je vais le faire avant, en effet, moi qui n'imaginais que l'utilisation de classe était réservés à des experts, je viens de me rendre compte que grâce à ces mêmes experts, on pouvait réaliser des choses extrêmement intéressante.

    cela étant dit, il va de soit que tout fonctionne.
    Maintenant, je vais compléter mon code afin de faire apparaître l'ensemble des zones du plan.

    Ensuite, je mettrais la totalité du code complété afin d'en faire profiter le plus grand nombre.

    J'ai en effet pût me rendre compte qu'il y avait un certain nombre de discussions sur le sujet non résolues.

    En attendant, une nouvelle fois merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  17. #17
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Si en plus ça marche ...

    Petite parenthèse sur les possibilités autour de ces classes de gestion des zones.

    Vous pouvez très bien stocker les zones dans votre base de données pour éviter d'avoir la définition de vos zones en dur dans le code. Le code de création de la zone seraient donc une boucle sur la table des zones. Cette table existe peut être déjà dans votre analyse et il ne manque peut être que les coordonnées pour ce faire.

    Ce que je vous invite à faire, c'est compléter les classes de méthodes qui vous donneraient la possibilité de :

    - Redéssiner la carte après un clic pour colorer la zone sélectionnée en rouge
    - Saisir de nouvelles zones en cliquant directement sur la carte pour définir le coint haut gauche et bas droit du rectangle
    - Afficher des infos au survol dans une fenêtre popup

    N'hésitez pas à demander

  18. #18
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Vmolines,

    En fait, j'avais commencé par créer une table sur mon serveur appelée "ZONES_PLANS"

    Avec à l'intérieur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PANTIN	Pantin	1	Rech Suspendu			690	5	1287	600	0	0
    PANTIN	Pantin	1	Apostrophe Suspendu		1287	5	1890	600	0	0
    PANTIN	Pantin	2	Rech Plat Boutiques		660	25	690	120	0	0
    PANTIN	Pantin	2	Rech Plat Clients		555	260	660	350	0	0
    PANTIN	Pantin	2	Rech Accessoires Boutiques	450	460	505	525	0	0
    PANTIN	Pantin	2	Rech Accessoires Clients	395	460	450	525	0	0
    Ce qui fait que que j'ai opté pour la méthode suivante:

    1- Rechercher comment faire appel à la table ZONES_PLAN
    Non sur le fait de l'interrogation à la base de données SQL, mais bien dans le sens d'intégrer cela dans le code actuel
    2- Définir l'ensemble des zones du plan
    3- Mise en œuvre des vos suggestions de votre message précédent, à savoir:
    a) Mise en couleur de la zone cliquée
    b) Afficher des infos au survol dans une fenêtre popup
    Dans mon cas des vêtements par modèles\coloris\tailles

    Question:

    Je vous cite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    - Saisir de nouvelles zones en cliquant directement sur la carte pour définir le coin haut gauche et bas droit du rectangle
    Est ce à dire que de cette manière, il sera possible de dessiner les zones directement ou dois je comprendre que les zones supplémentaires font l'objet du même type de programmation précédemment effectuée ?

    Il va de soit, que toutes remarques ou critiques de votre part sont les bienvenues
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  19. #19
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Pour saisir de nouvelles zones, nul besoin de redéfinir des classes. Dans un mode création de zone (qui doit être séparé de l'utilisation normale du plan), vous pouvez faire les choses suivantes :

    - Appuie sur un bouton "Créer une zone"
    - Capter deux clics sur l'image avec les coordonnées
    - Demander de saisir les autres informations définissant une zone (libellé, etc...)
    - Enregistrer tout ça dans une nouvelle ligne de la table Zone
    - Rappeler le code d'affichage du plan

  20. #20
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Vmolines,

    De fait....Logique

    Je suis en train de programmer le bouton "Nouvelle zone"
    Du coût, je vais en profiter pour en créer 1 en suppression, réservé à l'administrateur (au cas où l'ont finirais par me le réclamer)
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


Discussions similaires

  1. Visualisation et manipulation d'une image 3DS ?
    Par blackbird1 dans le forum OpenCV
    Réponses: 0
    Dernier message: 30/04/2014, 03h35
  2. manipulation d'une image, comment faire ?
    Par Virgile le chat dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 28/03/2009, 13h30
  3. [GD] Manipuler une image générée par php
    Par madvic dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/07/2008, 22h04
  4. Réponses: 19
    Dernier message: 04/03/2008, 10h36
  5. Manipulations autour d'une image
    Par ProgElecT dans le forum Vos contributions VB6
    Réponses: 4
    Dernier message: 30/11/2007, 11h01

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