Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare PtrSafe Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Const PS_SOLID = 0
Private Declare PtrSafe Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare PtrSafe Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare PtrSafe Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As Long) As Long
Private Sub UserForm_Click()
Dim i As Long
Dim Ret As Long, vX, vY
Dim Handle As Long
Dim Clr_RGB_Rouge, Clr_RGB_Vert, Clr_RGB_Bleue As Long
Dim hPen As Long
Dim x_debut, y_debut As Double
Dim Taille_Ligne As Long
Taille_Ligne = 3
Handle = FindWindow(vbNullString, Me.Caption)
Ret = GetDC(Handle)
i = 1
x_debut = Fonction_Mise_Echelle_Graphique(Tbl_Donnee_Distance_Cumulee_Sans_Pause(i), 0, Position_UserForm1_Width_Pixel, 0, 1, _
Debut_Zoom_Graphique_Axe_X, Fin_Zoom_Graphique_Axe_X)
y_debut = Position_UserForm1_Height_Pixel - Fonction_Mise_Echelle_Graphique(Tbl_Donnee_Altitude(i), 0, Position_UserForm1_Height_Pixel, 0.05, 0.95, _
Tbl_Donnee_Altitude_Extremum(1), Tbl_Donnee_Altitude_Extremum(2))
For i = 2 To Nb_TrackPoint Step 1
vX = Fonction_Mise_Echelle_Graphique(Tbl_Donnee_Distance_Cumulee_Sans_Pause(i), 0, Position_UserForm1_Width_Pixel, 0, 1, _
Debut_Zoom_Graphique_Axe_X, Fin_Zoom_Graphique_Axe_X)
vY = Position_UserForm1_Height_Pixel - Fonction_Mise_Echelle_Graphique(Tbl_Donnee_Altitude(i), 0, Position_UserForm1_Height_Pixel, 0.05, 0.95, _
Tbl_Donnee_Altitude_Extremum(1), Tbl_Donnee_Altitude_Extremum(2))
For k = 1 To Nb_Groupe_Pente_Altimetrie
If Abs(Tbl_Donnee_Pente_Intervalle(i)) >= Tbl_Debut_Groupe_Pente_Altimetrie(k) _
And Abs(Tbl_Donnee_Pente_Intervalle(i)) < Tbl_Fin_Groupe_Pente_Altimetrie(k) Then
Clr_RGB_Rouge = Tbl_Couleur_Groupe_Pente_Altimetrie(k, 1)
Clr_RGB_Vert = Tbl_Couleur_Groupe_Pente_Altimetrie(k, 2)
Clr_RGB_Bleue = Tbl_Couleur_Groupe_Pente_Altimetrie(k, 3)
End If
Next k
Call SetPixel(Ret, vX, vY, RGB(Clr_RGB_Rouge, Clr_RGB_Vert, Clr_RGB_Bleue))
hPen = CreatePen(PS_SOLID, Taille_Ligne, RGB(Clr_RGB_Rouge, Clr_RGB_Vert, Clr_RGB_Bleue)) 'create a new pen
DeleteObject SelectObject(Ret, hPen) 'Select our pen into the form's device context and delete the old pen
If i = 2 Then
MoveToEx Ret, x_debut, y_debut, 0&
End If
LineTo Ret, vX, vY
DeleteObject hPen
Next
End Sub
End Sub