Bonsoir,

J'ai finalement trouvé comment dessiner mon nuage de points sur l'image, merci Arkham46 de tes conseils précieux! ici

Pour ce faire je décompose l'événement après mise à jour du choix de fond de carte comme suit:

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
Public Sub FondCarte_AfterUpdate()
    Dim rep, chem As String
    chem = Dir(CurrentProject.Path & "\test.*")
 
    ' Libération de la classe au lancement de la fonction
    Set oGdi = Nothing
    'supprime le Fichier temporaire
    If chem <> "" Then Kill CurrentProject.Path & "\" & chem
    'Instanciation objet GDI
    Set oGdi = New clGdiplus
 
    'Redim origine ctl Fond & Détail
    Fond.Picture = ""
    txtZoom = 1
    Fond.Width = 14175: Fond.Height = 7369
    Me.Section("Détail").Height = 7937
 
    'Mise aux proportions du fond de carte & section détail
    rep = CSetProportions
    DoCmd.MoveSize , 150, , Me.Section(0).Height + Me.Section(1).Height + Me.Section(2).Height + 2 + CM2Twips(1.5)
 
    'Dessine les axes sur le fond de carte
    CDrawAxes
 
    'Dessine les points (cercle)sur le fond de carte
    CDrawDots
 
    'Sauve le fichier tempo
    CSave
 
    'Charge le fichier tempo
    CRepaint
 
    'Affiche les commandes latérales
    ShowLatComs
End Sub
Ce qui donne un résultat que je ne peux pas afficher ici, vu que le forum n'a pas l'air de prendre les images ou pièces attachées que j'envoie .

En tous cas j'affiche bien une image dans mon contrôle sur laquelle l'algo ci-dessus ajoute des axes X/Y étalonnés en mètres que j'arrive à calculer à partir du survol souris.

Mon objectif actuel est de faire un zoom sur la carte; je me suis inspiré des tutoriels d'Arkham46, que j'essaie d'adapter à mes besoins:

J'instancie donc un nouvel oGDI à partir du fond de carte choisi que je mets à l'échelle de mon contrôle image affecté du facteur de zoom (l'image est plus grande que le contrôle): j'aimerais afficher des scrollbars mais je dois me tromper quelque part car les barres n'apparaissent pas sans message d'erreur ???

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
Private Sub txtZoom_AfterUpdate()
    Dim oldZoom As Single
    oldZoom = gZoom
    gZoom = Nz(txtZoom, 1)
    If gZoom = 0 Then gZoom = 1
    'Libération classe
    Set oGdi = Nothing
    'Instanciation objet GDI
    Set oGdi = New clGdiplus
 
 
 
    ' Initialise chaque barre
'    With oGdi.ImgNew("CarteZoom")
        'Chargement de l'image depuis le fichier
        oGdi.LoadFile (FondCarte.Column(1))
        'Mise à l'échelle de oGdi
        oGdi.ScaleI Round(leRatioW, 4) * gZoom, Round(leRatioH, 4) * gZoom
        oGdi.BarNew
        oGdi.BarScaleX oGdi.ImageWidth
        oGdi.BarScaleY oGdi.ImageHeight
        oGdi.BarObject = Me.Fond
'    End With
    ' Dessine l'image secondaire et les barres
    PaintImage
    'sauve
'    oGdi.SaveFile (oGdi.ApplicationPath & "test2.png")
 
    ' Dessine l'image sur le contrôle
    oGdi.RepaintNoFormRepaint Me.Fond
End Sub
 
Private Sub PaintImage()
    ' Dessine l'image en mode découpage et alignée en haut à gauche
    ' La position de dessin est fonction des positions de la barre de défilement
    oGdi.DrawImg "CarteZoom", oGdi.BarStartX, oGdi.BarStartY, , , , GdipSizeModeClip, GdipAlignTopLeft
    ' Dessine les barres
    oGdi.BarDraw
End Sub
Le "DrawImg" ou le "BarDraw" doivent générer une erreur puisque "CarteZoom" (nom de l'image dans oGDI) n'est pas précisé bien que j'aie essayé avec!

Bref ! Je ne sais plus trop par quel bout prendre tout çà