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

IHM Discussion :

programmer msgraph nuage de points [AC-2016]


Sujet :

IHM

  1. #1
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut programmer msgraph nuage de points
    Bonjour,

    Je travaille actuellement sur un projet pour des archéologues. L'un de leurs outils est un SIG (Système d'Information Géographique) qui permet de jeter des points avec des coordonnées sur une carte.
    Ce SIG est un outil pour exploiter des données Access.
    J'ai créé pour un eux un outil statistique qui permet des comptages sur des artefacts de tel type, classe,... Je dispose également de coordonnées pour ces objets, ces coordonnées sont des points sur un axe XY d'un carroyage donné (un axe orthonormé).
    Ce carroyage, bien sûr ne donne pas des coordonnées GPS, mais des points situés sur une aire donnée avec un point 0 (croisement des axes) et un pas (échelle des axes).
    Générer ce nuage de points ne pose donc pas de gros problèmes.

    Mon sujet: j'ai découvert qu'il est possible d'affecter une image de fond pour l'aire du graphique. J'ai découvert également qu'il existe des contrôles de paramètres pour "bouger" l'image de fond par rapport au graphique lui-même. Je souhaiterais donc connaître les méthodes VBA pour effectuer par code les opérations suivantes sur l'image de fond du graphique:
    . rotation
    . échelle
    . translation horizontale
    . translation verticale
    La cerise sur le gâteau serait d'enregistrer ces mouvements pour chaque carroyage afin de positionner automatiquement les images de fond sous le graphique.

    J'espère que mes explications (un peu longues) sont assez claires. Si j'ai mal posé le problème, je peux apporter quelques précisions.

    Ci-dessous un prototype de que je voudrais obtenir:
    Nom : Sans titre 1.png
Affichages : 127
Taille : 775,8 Ko

    Merci d'avance pour vos conseils.
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  2. #2
    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 600
    Points
    24 600
    Par défaut
    Bonjour,

    J'ai "un peu" travailler avec Graph.

    Il y a 2 tutos dont le second donne les méthodes de rotation : https://loufab.developpez.com/tutori...cess/msgraph2/

    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

  3. #3
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut programmer msgraph nuage de points
    Merci loufab pour ta réponse,

    D'après ce que je comprends de ce tuto, il s'agit ici de bouger le graphique (3D).

    En ce qui me concerne j'aimerais trouver un système :

    . pour faire coïncider l'intersection des abscisses et ordonnées du graphique avec un point dans l'image
    . pour appliquer une échelle à l'image correspondant à l'échelle des axes
    . pour appliquer une rotation à la map afin que le nord et le sud dans l'image représentent une droite alignée avec les ordonnées...

    Je sais que çà paraît compliqué et j'en demande peut-être un peu trop à VBA.

    J'applique mon image ainsi et je suis preneur de toute suggestion.
    Nom : Capture.PNG
Affichages : 121
Taille : 493,9 Ko

    Et çà donne:
    Nom : Capture2.PNG
Affichages : 114
Taille : 533,5 Ko

    Merci encore !
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  4. #4
    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 600
    Points
    24 600
    Par défaut
    Je pense que tu en demande un peu trop à graph il n'est pas fait pour ça et sa restera trop approximatif.
    Par contre la classe clGdiPlus de thierry Gasperment fera parfaitement l'affaire.

    https://arkham46.developpez.com/arti...clgdiplusgame/
    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

  5. #5
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut programmer msgraph nuage de points
    Merci loufab,

    Okay, je ne vois plus qu'une solution, dis-moi si çà te paraît bon:

    . Ne plus faire apparaître la carte comme trame du graphique mais dans un contrôle image sous le graphique transparent.
    . Opérer les opérations de mise à l'échelle, rotation, translation pour faire coïncider le "point zéro" de l'image avec le graphique grâce à clGDIPlus.

    Sur ce dernier point (zéro) je ne pense pas avoir besoin d'une précision absolue: l'outil n'est pas sensé remplacer le SIG, d'autant que si la fonction de "zoom" est disponible il serait possible d'être relativement précis et de fournir les coordonnées du point zéro par pointage avec la souris. En possession de ces dernières, il devrait être possible, par simple translation de "bouger" la carte pour la faire coïncider avec le point zéro du graphique.

    Dis-moi si j'ai bon, stp

    Quant aux méthodes à utiliser pour dérouler ce petit algo, je n'en ai pas le début du commencement d'un atome d'idée
    Existe-t-il des exemples desquels je pourrais m'inspirer ?
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  6. #6
    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 600
    Points
    24 600
    Par défaut
    ça m'a l'air de tenir la route comme approche.

    Normalement tu devrais trouver des infos dans la classe gdi+ et sur developpez.

    Perso j'ai vu faire des trucs avec cette classe qui sont extrêmement représentatif en terme de positionnement, mais je n'y ai moi même pas travaillé.
    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

  7. #7
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut programmer msgraph nuage de points
    Effectivement j'ai trouvé des ressources ici et ici , mais pfouuu!! çà m'a l'air chaud bouillant comme apprentissage par rapport au pauvre cahier des charges dont j'ai besoin!

    M'enfin! Si c'est le prix à payer...

    En tous cas je vais laisser ce billet ouvert au cas ou une bonne âme aurait pitié de moi.

    Et merci loufab pour tes renseignements précieux.
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  8. #8
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut programmer la classe clGdiPlus
    Bonjour à tous et mes meilleurs vœux 2021 !!!

    Okay, j'ai décidé d'implémenter la classe clGDIPlus de Thierry Gasperment dans mon appli. Malgré mes efforts et avec mes maigres ressources, je n'arrive qu'à un résultat partiel.
    J'avance pas à pas et :

    Etape 1 : Dans un formulaire vierge avec une liste déroulante je choisis une carte avec les infos suivantes:
    . Colonne 2: Chemin d'un fichier graphique (png)
    . Colonne 3: largeur en pixels
    . Colonne 4: hauteur en pixels
    Ce qui me permet d'afficher l'image en format découpage et de régler les proportions du contrôle et de la section détail via un ratio calculé.

    Etape 2 : C'est là que je coince Je voudrais charger l'image dans un objet oGdi et lui appliquer des fonctions d'échelle et de translation dans le contrôle de manière à aligner son point d'origine (bas-gauche) avec l'origine d'un graphique nuage de points qui sera avec fond transparent et superposé au fond de carte. J'arrive à instancier l'objet oGdi.

    Problème :
    . les exemples fournis dans le HowTo de Thierry chargent l'img de l'objet oGdi à partir d'un champ OLE d'une table alors que je souhaite opérer à partir du contenu de mon contrôle.
    . Je n'ai pas bien compris les méthodes à appliquer à cet objet oGdi.Img pour: Zoom - translations - appliquer les changements à mon contrôle image... Si une bonne âme ...

    Etape 3 : enregistrer les changements apportés dans une table pour les appliquer au prochain chargement ... (à venir, mais çà je devrais me débrouiller si je passe l'étape 2).

    Ci-après le code pour instancier oGdi, mais je reste bloqué après ce stade malgré mes recherches.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Compare Database
    Option Explicit
     
    Private oGdi As clGdiplus ' Classe pour utilisation de gdiplus
    ' Facteur de zoom
    Private gZoom As Single
    ' Ratio Largeur/hauteur
    Private leRatio As Double
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Open(Cancel As Integer)
        Dim rep, laLargeur As Long, laHauteur As Long, leRatio As Double
        Dim oGdi As clGdiplus
     
        DoCmd.RunMacro "Agrandir"
     
        'Mise aux proportions du fond de carte & section détail
        gZoom = 1
        rep = CSetProportions
     
        If rep = False Then Exit Sub
    End Sub
    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
    Function CSetProportions() As Boolean
        Dim laLargeur As Long, laHauteur As Long, HTDetail As Long, HTFond As Long, LGFond As Long
        CSetProportions = False
        If Nz(FondCarte, "") = "" Then
            MsgBox ("Fond de carte requis.")
            FondCarte.SetFocus
            FondCarte.Dropdown
            Exit Function
            Else
            CSetProportions = True
        End If
     
     
        ' Libération de la classe à la fermeture du formulaire
        If Not oGdi Is Nothing Then Set oGdi = Nothing    'Instanciation objet GDI
        Set oGdi = New clGdiplus
     
     
        LGFond = Fond.Width
        laLargeur = CLng(FondCarte.Column(2))
        laHauteur = CLng(FondCarte.Column(3))
        leRatio = laLargeur / laHauteur
        HTDetail = Me.Section("Détail").Height
        HTFond = LGFond / leRatio
     
        If HTFond > Me.Section("Détail").Height Then
            Me.Section("Détail").Height = CM2Twips(1) + (Fond.Width / leRatio) + CM2Twips(1)
            Fond.Height = (LGFond / leRatio)
            Else
            Fond.Height = (LGFond / leRatio)
            Me.Section("Détail").Height = CM2Twips(1) + (Fond.Width / leRatio) + CM2Twips(1)
        End If
        Fond.Picture = FondCarte.Column(1)
     
        ' Création d'un nouveau bitmap de la taille de l'image Img
        oGdi.CreateBitmapForControl Me.Fond
        Debug.Print oGdi.img.ImgName 'ici Name="" :(
    End Function
    Tout çà dans le module du formulaire...

    Merci d'avance
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  9. #9
    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,

    Il devait être possible de retravailler l'image de fond avec clGdiplus, la sauvegarder dans un fichier temporaire, et l'injecter en fond du graphique.

  10. #10
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut programmer msgraph nuage de points
    Merci Arkham46,

    C'est effectivement ce à quoi je me suis attelé. Au final, je n'utilise plus MSGraph, je n'utilise que clGDI+.

    J'ai donc un fond de carte sur lequel je vais dessiner les axes et le nuage de points dont j'ai les coordonnées dans la base. Je galère encore un peu dans les conversions pixels de l'image / mètres sur la carte, mais j'avance(règle de 3 ).

    . Existe-t-il une méthode de la classe qui permette de dessiner des cercles (plus joli que des points) ?
    . Dans l'objectif de faire un zoom sur une portion de la carte en gardant les proportions de l'image, que j'ai déjà appliquées au contrôle image récepteur, je suppose qu'une simple translation horizontale de la souris avec bouton appuyé devrait suffire => calcul de l'ordonnée proportionnelle.

    Merci encore de ta réponse,

    Richard
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  11. #11
    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
    Ah oui on peut également tout dessiner si le graph ne donne pas satisfaction.

    Pour des cercles c'est DrawEllipse, le fond est transparent par défaut.
    Mettre le paramètre pType à TypeEllipseCenter pour définir un centre et les rayons.
    Mettre également SmoothingMode à GdipSmoothingAntialias ou GdipSmoothingHighQuality pour un résultat plus "propre".

  12. #12
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut programmer msgraph nuage de points
    Merci Arkham46

    Je clos ce billet avec la mention "résolu".

    J'aurai d'autres questions sur un intitulé plus spécifique concernant clGDI+.

    Bonne soirée !
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

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

Discussions similaires

  1. nuage de points programmable
    Par davidpery dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 20/10/2007, 17h23
  2. Equation d une sphere a partir d un nuage de points
    Par MDiabolo dans le forum Algorithmes et structures de données
    Réponses: 27
    Dernier message: 05/05/2006, 16h40
  3. nuage de points
    Par uriotcea dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 25/03/2006, 10h29
  4. nuages de points sont-ils dans une zone??
    Par smedini dans le forum Algorithmes et structures de données
    Réponses: 26
    Dernier message: 21/02/2006, 11h01
  5. interpolation couleur entre nuage de points
    Par soubre dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/07/2005, 15h52

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