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

VBA Access Discussion :

[classe Gdi+] coordonnées du clic sur un image.


Sujet :

VBA Access

  1. #1
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut [classe Gdi+] coordonnées du clic sur un image.
    Bonjour,

    Tout est dans le titre.

    Je cherche à capter les coordonnées d'un clic sur une image qui serait zoomée/clippée éventuellement cropée pour pouvoir reproduire les points sur l'image principale.
    Je capte les param X et Y de l'évènement mouseUp et traiter l'image principale ce n'est pas compliqué, ça fonctionne.
    Par contre pour une image zoomé, clippée je n'ai pas trouvé la méthode.

    Je sèche sur le problème depuis plusieurs jours.

    Merci d'avance.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 116
    Points : 1 639
    Points
    1 639
    Par défaut
    Salut,

    De mémoire, l'API GDI+ affiche quelque chose dans un control, mais n'a aucune idée de son état zoom.
    Je pense qu'il te faut recalculer les coordonnées de la souris.

    Au pif, si tu connais les coordonnées de la souris par rapport à l'origine du control, multiplie ou divise les par le facteur de zoom.

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    En effet j'ai bien pensé à ça mais les coordonnées (X, Y des MouseEvent) dans le contrôle sont toujours exprimés par rapport au bord du contrôle (top/left) et non de l'image totale.
    Si bien qu'une opération là-dessus ne peut pas donner le résultat escompté, sauf erreur de ma part.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour Loufab,

    Je me demandais s'il n'y avait pas moyen de découper l'image principale en région et ensuite zoomer une région.

    Comme ça avec l'identifiant de la région zoomée et cliquée, tu peut retrouver la région correspondante (avec même id.) avec ses coordonnées sur l'image principale.

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Salut User,

    L'utilisation de régions n'a rien changé à mon problème.

    Après quelques essais, il y a toujours ce décalage avec une image zoomé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        .WorldScale gZoom, gZoom, True
        .WorldTranslate ogdi.BarLeft() + ogdi.BarStartX(), ogdi.BarTop() + ogdi.BarStartY(), True
        .DrawImg imgName, 0, 0, , , , GdipSizeModeClip, GdipAlignTopLeft
    entre les coordonnées cliquées (X,Y) et la création du point d'après les coordonnées données par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CtrlToImgX(X, Me.Image0), .CtrlToImgY(Y, Me.Image0)
    Quand on s'éloigne du point 0 (largeur image/2, hauteur image/2) l'écart s'intensifie.

    Le but étant de garder en mémoire les coordonnées des points cliqués pour pouvoir les afficher à nouveau.

    Personne n'a travaillé avec cette superbe classe sur ce genre de problématique ?

    Dans l'attente.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour Loufab,

    J'avoue ne pas trop connaître ce type de code.

    Je pensais à mémoriser si possible les coordonnées (x0, y0) dans l'image principale du coin supérieur gauche de l'image à zoomer (coordonnées à l'échelle normale).

    Ensuite faire une conversion des x et y du point cliqué sur l'image zomée pour avoir les coordonnées correspondantes sur l'image principale :

    x = x0 + x/2
    y = y0 + y/2

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Merci pour ta réponse.

    Difficile d'obtenir ces coordonnées du coin haut gauche du controle par rapport à l'image.
    Je met des barres de défilement lors du zoom.

    En bref me voici bien coincé.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,
    Si ta nouvelle image peut être obtenue par un CROP suivi d'un RESIZE,
    mathématiquement, il devait être possible d'obtenir les coordonnées d'un point dans l'image finale en fonction de ses coordonnées dans l'image initiale.
    Mais cela suppose que tu puisses calculer le facteur d’agrandissement quand tu utilises les barres de défilement. Possible ?
    "Always look at the bright side of life." Monty Python.

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Mais cela suppose que tu puisses calculer le facteur d’agrandissement quand tu utilises les barres de défilement. Possible ?
    C'est effectivement la piste que je souhaiterais suivre, obtenir les coordonnées du point en utilisant les valeurs de défilement + le facteur de zoom.

    Je n'arrive pas à récupérer/utiliser les valeurs de défilement. Sauf erreur de ma part, crop+zoom ou zoom seul, sans ces valeurs de défilement et la méthode de calcul j'en suis au même point.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  10. #10
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bonjour,

    Lors du dessin de la "sous-image" nommée imgName, la matrice utilisée est conservée et inversée.
    On peut donc l'utiliser directement pour transformer les points et retrouver la position du clic dans le système de coordonnée de l'image complète indépendamment des opérations de transformation d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oGdi.MatrixTransformPointSingle X, Y, oGdi.img(imgName).DrawMatrix

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour Thierry,

    Un grand merci à toi !

    J'utilisais mal la commande.

    1) je l'utilisais avant les ctrlToImgX et Y alors qu'il faut le faire après.
    2) je l'utilisais avec des matrices que je créais lors des zooms.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        If gZoom = 1 Then
           If Not .MatrixExists(CStr(gZoom)) Then .MatrixNew CStr(gZoom)
        Else
           .MatrixNew CStr(gZoom), .MatrixScale(.matrix("1"), gZoom, gZoom)
        End If
    Du coup avec ton aide ça fonctionne au poil et ça m'ouvre tout plein de fonctionnalités possibles.

    Encore un grand merci Thierry.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MooTools] Récupérer les coordonnées de clic sur image
    Par yoshï dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 21/12/2010, 13h59
  2. 2 actions différentes avec un clic sur une image
    Par beegees dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 26/02/2008, 19h37
  3. Coordonnées d'un clic sur une image
    Par jacques-antoine dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 22/02/2008, 12h06
  4. Réponses: 1
    Dernier message: 25/03/2007, 18h20
  5. Comment récupérer les coordonnées d’un clique sur une image ?
    Par da_sys dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 12h34

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