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:
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 .
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
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 ???
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!
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
Bref ! Je ne sais plus trop par quel bout prendre tout çà
Partager