Vb10 - créer vos propres calques sur une image

Soyez le premier à donner votre avis sur cette source.

Vue 5 823 fois - Téléchargée 647 fois

Description

Dans ce projet "test" je me sert d'une image de la France qui va très bien avec le terme "Region" ^^
Vous allez pouvoir définir vos régions avec la souris et l'enregistrer en lui donnant un nom.
Au survol de la souris sur la carte le nom s'affichera en dessous de la carte et changera le pointeur.
C'est un système de base assez léger.

Pour l'utilisation.
- Lance l'appli test
- Dessine le contour d'un département sur la carte
- Indique son nom dans le cadre en haut a droite
- Clique sur Ajouter
( ajoute encore 2 ou 3 autres tracés)

Pour tester.
- Clique sur le Petit menu
- Dans mode test, clique sur Dessiner toutes les régions

Voila :)=
Sinon,
Nettoyer, sa efface ton dernier tracé visuel (non enregistré)
Tout réinitialiser, sa efface ton dernier tracé visuel et tes régions (enregistré)

Conclusion :


Le code est bien commenté; vous devriez avoir un tas d'idée a partir de mon code :)
Autres termes: calque mousemove, region mousemove

Codes Sources

A voir également

Ajouter un commentaire Commentaires

 Class SexaCoordonnee
        Friend Axe As Sexagesime = Sexagesime.Nord
        Friend Value As Decimal = 0
        Friend Property Text As String
            Get
                Dim Coordonnee() As Byte = Sexagesimal
                Return Axe.ToString & ":" & Coordonnee(0) & "-" & Coordonnee(1) & "-" & Coordonnee(2)
            End Get
            Set(ByVal StV As String)
                Dim S() As String = StV.Split(":")

                Select Case S(0) '("qu'on le dise une fois pour toutes")
                    Case "Nord" : Axe = Sexagesime.Nord
                    Case "Sud" : Axe = Sexagesime.Sud
                    Case "Ouest" : Axe = Sexagesime.Ouest
                    Case "Est" : Axe = Sexagesime.Est
                End Select 'La prochaine fois qu'on le redit, on ajoute haut et bas.
                'Case Haut Axe = Haut et Case Bas, Axe = Bas. 
               Dim St() As String = S(1).Split("-")
                Value = (3600 * St(0) + 60 * St(1) + St(2))
            End Set
        End Property
        Friend Property Sexagesimal As Byte()
            Get
                Dim R() As Byte = {89, 59, 59}
                Dim temp() As Decimal = {0, 0, 0}
                temp(0) = Int(Value / 3600)
                temp(2) = Value Mod 3600
                temp(1) = Int(temp(2) / 60)
                temp(2) = temp(2) Mod 60
                R(0) = temp(0) : R(1) = temp(1) : R(2) = temp(2)
                Return R
            End Get
            Set(ByVal Coordonnee As Byte())
                Value = Coordonnee(0) * 3600 + Coordonnee(1) * 60 + Coordonnee(2)
            End Set
        End Property
    End Class


La géodésie fonctionne bien. Avec un zoom sur une selection qui n'affecte pas les couleurs, on peut peaufiner les détails sans re-inventer le programme.
Les formules sont vérifiées, mais la structure et les labels seraient avantageugement améliorés que ça mangerait pas de pain.

Je recommence tout dans un module "Evolution" qui devrait idéaliser l'approche de l'analyse graphique (vectorialiser les pixels de la courbe) et introduire la reconaissance de forme.
L'objectif est de re-générer la courbe avec un algorythme de Fornar, sorte d'anachronisme qui suppose qu'une application qui colle au passé devrait donner une idée de l'avenir.
On pourrait décomposer en série de Fourrier si le digital ne convenait pas mieux a l'algorithmie qu'au calcul.

Certains savent quel objets de la librairie produisent des adaptations vérifiées, mais ils visitent d'autres sujets. Je recommencerais donc.
Public Class Evolution

    Function Bisextile(ByVal An As Integer) As Boolean
        REM RICHIE_KIRNINGHAM (Le Langage C) Une année est bisextile si elle est divisible par 4 et pas par cent a l'exception des années divisibles par 400 qui sont bisextiles.
        Dim BISEX As Boolean = An Mod 4 = 0
        BISEX = BISEX And Not An Mod 100 = 0
        If An Mod 400 = 0 Then BISEX = True
        Return BISEX
    End Function
    Function IndexDuJour(ByVal DTDate As DateTime) As UInt16
        Dim Calend() As UInt16 = {31.28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
	...

Au revoir, et merci Whismeril pour tes encouragements, A bientôt pour un autre sujet.
Bravo Duke et Whismeril et Merci.

J'ai pas fini de fignoler, et pour amélorer le module sexalogique, je développe des environements de tests.

Public Class Form1
    'Zoom dans la picturebox.
    Dim WithEvents Photo As New PictureBox With { _
        .Dock = DockStyle.Fill} ', .SizeMode = PictureBoxSizeMode.StretchImage}
    Dim OK As Boolean = True
    Sub New()
        InitializeComponent()
        Controls.Add(Photo)
        Dim OpenFileDialog As FileDialog
        Try
            OpenFileDialog = New OpenFileDialog
            OpenFileDialog.Filter = "Tous | *.*|Fichier Bitmap (*.bmp) | *.bmp "
            If OpenFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
                'Ouverture de l'image
                Photo.Image = Image.FromFile(OpenFileDialog.FileName)
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
            OK = False
            Exit Sub
        End Try
    End Sub
    Sub QuandClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Photo.MouseClick
        If OK Then
            Dim X As Integer = e.X
            Dim W As Integer = Int(Photo.Width / 2)
              Dim Y As Integer = e.Y
            Dim H As Integer = Int(Photo.Height / 2)
            Dim Origin As Bitmap = Photo.Image.Clone
            Dim Temp As Bitmap = Photo.Image.Clone
            Dim Pixel As Color
            For i = 0 To W - 2
                For j = 0 To H - 2
                    Pixel = Origin.GetPixel(i + X / 2, j + Y / 2)
                    Temp.SetPixel(2 * i, 2 * j, Pixel)
                    Temp.SetPixel(2 * i + 1, 2 * j, Pixel)
                    Temp.SetPixel(2 * i, 2 * j + 1, Pixel)
                    Temp.SetPixel(2 * i + 1, 2 * j + 1, Pixel)
                Next
            Next
            Photo.Image = Temp
        End If
    End Sub

    
End Class


Attendez la version finale. C'est comme le scroll, il faut mettre l'objet visual dans le repère, pas greffer des repéres dans l'Óbject.
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
568
Bonsoir, n'étant plus dans ce domaine, je n'ai pas de quoi valider vos calculs. Je vous fait confiance.

Public Class Form1

    'Je tire une grande form1 dans le concepteur et je copy/colle ce code.
    'Auquel j'ajoute sexalogic(ajouter New module et copier\coller)
    Dim essai As New MiniGeoBox
    Sub New()
        InitializeComponent()
        essai.MiniBox.Dock = DockStyle.Bottom
        'sinon ca s'installe en haut ou je voudrais mettre la pictureBox avec le zoom dans un onglet pour rèver de tout ce que je pourrais rajouter.
        Controls.Add(essai.MiniBox)
    End Sub
    'Je run le debug de mon basic express,
    'Je click droit dans le jaune pour choisir une photo,
    '(tous les fichiers)
    'Je règle les paramètres géodésiques de l'onglet "Limites"
    'Et je me repose un peu avant de continuer.
    'Et j'ai pas besoin de sauvegarder parce que c'est édité
    'chez CodesSauce on dérouille. Merci. ING c'est trop formel.

End Class



Module Sexalogic

    Enum Sexagesimal
        Nord
        Sud
        Ouest
        Est
    End Enum

    Class SexaCoordonnee
        Friend Axe As Sexagesimal = "Nord"
        Friend Value As Decimal = 0
        Friend Property Text As String
            Get
                Dim Coordonnee() As Byte = Sexagesimal
                Return Axe.ToString & ":" & Coordonnee(0) & "-" & Coordonnee(1) & "-" & Coordonnee(2)
            End Get
            Set(ByVal StV As String)
                Dim S() As String = StV.Split(":")
                Axe = S(0)
                Dim St() As String = S(1).Split("-")
                Value = (3600 * St(0) + 60 * St(1) + St(2))
            End Set
        End Property
        Friend Property Sexagesimal As Byte()
            Get
                Dim R() As Byte = {179, 59, 59}
                Dim temp() As Decimal = {0, 0, 0}
                temp(0) = Int(Value / 3600)
                temp(2) = Value Mod 3600
                temp(1) = Int(temp(2) / 60)
                temp(2) = temp(2) Mod 60
                R(0) = temp(0) : R(1) = temp(1) : R(2) = temp(2)
                Return R
            End Get
            Set(ByVal Coordonnee As Byte())
                Value = Coordonnee(0) * 3600 + Coordonnee(1) * 60 + Coordonnee(2)
            End Set
        End Property
    End Class

    Class SexaBox
#Region "DECLARE CONCEPT"
        Friend Tableau As New Panel With {.Name = "Panneau", _
                .Anchor = 4, .Location = New Point(0, 0), .Size = New Point(300, 22)}
        Dim AxeLabel As New Label With {.Name = "AxeLabel", _
                .Anchor = 4, .Location = New Point(0, 2), .Size = New Point(58, 18)}
        Dim AxeBox As New ComboBox With {.Name = "AxeBox", _
                .Anchor = 4, .Location = New Point(58, 0), .Size = New Point(50, 18)}
        Dim Valeur As New NumericUpDown With {.Name = "Valeur", _
                                             .Minimum = 0, .Maximum = 179, _
                .Anchor = 4, .Location = New Point(114, 0), .Size = New Point(40, 18)}
        Dim Minute As New NumericUpDown With {.Name = "Minute", _
                                                .Minimum = 0, .Maximum = 59, _
             .Anchor = 4, .Location = New Point(160, 0), .Size = New Point(35, 18)}
        Dim Seconde As New NumericUpDown With {.Name = "Seconde", _
                                               .Minimum = 0, .Maximum = 59, _
              .Anchor = 4, .Location = New Point(200, 0), .Size = New Point(35, 18)}
        Sub initializeConcept()
            Tableau.Controls.Add(AxeLabel)
            Tableau.Controls.Add(AxeBox)
            Tableau.Controls.Add(Valeur)
            Tableau.Controls.Add(Minute)
            Tableau.Controls.Add(Seconde)
        End Sub
#End Region
        Property Coordonnee As SexaCoordonnee
            Get
                Dim Temp As New SexaCoordonnee
                Temp.Sexagesimal = {Valeur.Value, Minute.Value, Seconde.Value}
                Temp.Axe = AxeBox.Text
                Return Temp
            End Get
            Set(ByVal value As SexaCoordonnee)
                Dim Temp() As Byte = value.Sexagesimal
                AxeBox.Text = value.Axe
                Valeur.Value = Temp(0) : Minute.Value = Temp(1) : Seconde.Value = Temp(2)
            End Set
        End Property
        Sub New(Optional ByVal text As String = "Haut\Nord\89:59:59")
            initializeConcept()
            Dim S0() As String = text.Split("\")
            AxeLabel.Text = S0(0) : AxeBox.Text = S0(1)
            Dim S() As String = S0(2).Split(":")
            Valeur.Value = S(0) : Minute.Value = S(1) : Seconde.Value = S(2)
            If AxeBox.Text = "Nord" Or AxeBox.Text = "Sud" Then
                AxeBox.Items.Add("Nord") : AxeBox.Items.Add("Sud") : End If
            If AxeBox.Text = "Ouest" Or AxeBox.Text = "Est" Then
                AxeBox.Items.Add("Ouest") : AxeBox.Items.Add("Est") : End If
        End Sub
    End Class

    Class SexaPoint
        Dim Nom As String = ""
        Friend Longitude As New SexaCoordonnee
        Friend Latitude As New SexaCoordonnee
        Friend Property Text As String
            Get
                Dim S As String
                S = Latitude.Text & "\" & Longitude.Text
                Return S
            End Get
            Set(ByVal StrPos As String)
                Dim S() As String = StrPos.Split("\")
                For i As Integer = 0 To 1                   
                    If (S(i).Split(":")(0) < "ouest") Then
                        Latitude.Text = S(i)
                    Else
                        Longitude.Text = S(i)
                    End If
                Next
            End Set
        End Property
    End Class

    Class SexaCube
        Friend Bord() As SexaCoordonnee
        Function Height() As Decimal
            Return Bord(Sexagesimal.Nord).Value + Bord(Sexagesimal.Sud).Value
        End Function
        Function Width() As Decimal
            Return Bord(Sexagesimal.Ouest).Value + Bord(Sexagesimal.Est).Value
        End Function
        Function Point(ByVal Longitude As Sexagesimal, ByVal Latitude As Sexagesimal) As SexaPoint
            Dim Temp As New SexaPoint
            Temp.Longitude = Bord(Longitude)
            Temp.Latitude = Bord(Latitude)
            Return Temp
        End Function
#Region "DECLARE CONCEPT"
        Friend MiniTaSexaBox As New TabPage With {.Text = "Limites", .Location = New Point(0, 0)} 
        Sub initializeConcept()
            Dim CadreNord = New SexaBox("Haut\Nord\89:59:59") '.Tableau
            CadreNord.Tableau.Location = New Point(CadreNord.Tableau.Location.X, 11)
            MiniTaSexaBox.Controls.Add(CadreNord.Tableau)
            Dim CadreSud = New SexaBox("Bas\Sud\89:59:59")
            CadreSud.Tableau.Location = New Point(CadreSud.Tableau.Location.X, 32)
            MiniTaSexaBox.Controls.Add(CadreSud.Tableau)
            Dim CadreOuest = New SexaBox("Gauche\Ouest\23:59:59")
            CadreOuest.Tableau.Location = New Point(CadreOuest.Tableau.Location.X, 53)
            MiniTaSexaBox.Controls.Add(CadreOuest.Tableau)
            Dim CadreEst = New SexaBox("Droite\Est\23:59:59")
            CadreEst.Tableau.Location = New Point(CadreEst.Tableau.Location.X, 74)
            MiniTaSexaBox.Controls.Add(CadreEst.Tableau)
        End Sub
#End Region
        Sub New()
            initializeConcept()
        End Sub
    End Class

    Class SexaRepere
        Dim Mesures As Size
        Dim Echelle As Point
        Friend Matrice As New SexaCube
        Property Taille As Size
            Get
                Dim Tab As New Size
                Tab.Height = Echelle.Y * Mesures.Height
                Tab.Width = Echelle.X * Mesures.Width
                Return Tab
            End Get
            Set(ByVal value As Size)
                Mesures.Height = value.Height / Echelle.Y
                Mesures.Width = value.Width / Echelle.X
            End Set
        End Property
        Function Plot(ByVal Gite As SexaPoint) As Point
            Dim Position As New Point
            Position.Y = (Gite.Latitude.Value * Taille.Height + Matrice.Bord(Sexagesimal.Sud).Value) / Matrice.Height
            Position.X = (Gite.Longitude.Value * Taille.Width + Matrice.Bord(Sexagesimal.Est).Value) / Matrice.Width
            Return Position
        End Function
        Function Plot(ByVal Position As Point) As SexaPoint
            Dim Gite As New SexaPoint
            Gite.Longitude.Value = (Position.X * Matrice.Width - Matrice.Bord(Sexagesimal.Est).Value) / Taille.Width
            Gite.Latitude.Value = (Position.Y * Matrice.Height - Matrice.Bord(Sexagesimal.Sud).Value) / Taille.Height
            Return Gite
        End Function
    End Class

    Class Photofile
        Friend Photo As PictureBox
#Region "Menu"
        Sub NewMenu()
            Item_Ajouter.DropDownItems.Add(Item_Ajout_Photo)
        End Sub
        Dim WithEvents Item_Ajouter As New ToolStripMenuItem With {.Name = "ItemAjout", _
                                                                      .Text = "Ajouter"}
        Dim WithEvents Item_Ajout_Photo As New ToolStripMenuItem With {.Name = "ItemAjoutPhoto", _
            .Text = "Photo", .ToolTipText = "Charge une photo peripherique"}
        Sub AjoutePhoto() Handles Item_Ajout_Photo.Click
            Dim OpenFileDialog As FileDialog
            Try
                OpenFileDialog = New OpenFileDialog
                OpenFileDialog.Filter = "Fichier Bitmap (*.bmp) | *.bmp |Tous | *.*"
                If OpenFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
                    'Ouverture de l'image
                    Photo.Image = Image.FromFile(OpenFileDialog.FileName)
                End If
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                Exit Sub
            End Try
        End Sub
#End Region

        Sub New(ByVal Box As PictureBox, Optional ByVal StartLoad As Boolean = False)
            NewMenu()
            Photo = Box
            Photo.ContextMenuStrip = New ContextMenuStrip
            Photo.ContextMenuStrip.Items.Add(Item_Ajouter)
            If StartLoad Then AjoutePhoto()
        End Sub
    End Class

    Class MiniGeoBox
        Dim Detail As New PictureBox
        Friend Repere As New SexaRepere
#Region "DECLARE CONCEPT"
        Friend MiniBox As New Panel With _
             {.Location = New Point(10, 10), .Size = New Point(460, 105), _
              .BackColor = Color.AliceBlue, .Anchor = 15}
        Dim WithEvents MiniPlan As New PictureBox With {.Location = New Point(260, 0), .Size = New Point(200, 105), _
                      .BackColor = Color.Beige, .SizeMode = PictureBoxSizeMode.StretchImage, _
                     .Anchor = 15}
        Dim Carton As New Photofile(MiniPlan)
        Dim Choix As New TabControl _
              With {.Location = New Point(0, 0), .Size = New Point(250, 105)}
        Dim PremierChoix As New TabPage With {.Text = "Selection"}  
        Sub initializeConcept()
            MiniBox.Controls.Add(MiniPlan)
            MiniBox.Controls.Add(Choix)
            Choix.Controls.Add(PremierChoix)
            Dim T As New TabPage
            T = Repere.Matrice.MiniTaSexaBox
            Choix.Controls.Add(T)
        End Sub
#End Region
        Sub New()
            initializeConcept()
        End Sub
    End Class

End Module


C'est pas grand chose mais ca fonctionne.

Merci Whismeril,
J'ai trouvé une solution qui marche au petit poil, mais trop brouillon pour développer. Heureusement, je découvre "ENUM" qui change tout.
Jái pas débuggé mais tant pi car
JE MIS, J'ÔTE.
Je sais pas si ca va marcher mais ce qui suit me botte.



Module Sexalogic

    Enum Sexagesimal
        Nord
        Sud
        Ouest
        Est
    End Enum

    Class SexaCoordonnee
        Friend Axe As Sexagesimal = "Nord"
        Friend Value As Decimal = 0
        Friend Property Text As String
            Get
                Dim Coordonnee() As Byte = Sexagesimal
                Return Axe.ToString & ":" & Coordonnee(0) & "-" & Coordonnee(1) & "-" & Coordonnee(2)
            End Get
            Set(ByVal StV As String)
                Dim S() As String = StV.Split(":")
                Axe = S(0)
                Dim St() As String = S(1).Split("-")
                Value = (3600 * St(0) + 60 * St(1) + St(2))
            End Set
        End Property
        Friend Property Sexagesimal As Byte()
            Get
                Dim R() As Byte = {179, 59, 59}
                Dim temp() As Decimal = {0, 0, 0}
                temp(0) = Int(Value / 3600)
                temp(2) = Value Mod 3600
                temp(1) = Int(temp(2) / 60)
                temp(2) = temp(2) Mod 60
                R(0) = temp(0) : R(1) = temp(1) : R(2) = temp(2)
                Return R
            End Get
            Set(ByVal Coordonnee As Byte())
                Value = Coordonnee(0) * 3600 + Coordonnee(1) * 60 + Coordonnee(2)
            End Set
        End Property
    End Class

    Class SexaBox
#Region "DECLARE CONCEPT"
        Friend Tableau As New Panel With {.Name = "Panneau", _
                .Anchor = 4, .Location = New Point(0, 0), .Size = New Point(300, 22)}
        Dim AxeLabel As New Label With {.Name = "AxeLabel", _
                .Anchor = 4, .Location = New Point(0, 2), .Size = New Point(58, 18)}
        Dim AxeBox As New ComboBox With {.Name = "AxeBox", _
                .Anchor = 4, .Location = New Point(58, 0), .Size = New Point(50, 18)}
        Dim Valeur As New NumericUpDown With {.Name = "Valeur", _
                                             .Minimum = 0, .Maximum = 179, _
                .Anchor = 4, .Location = New Point(114, 0), .Size = New Point(40, 18)}
        Dim Minute As New NumericUpDown With {.Name = "Minute", _
                                                .Minimum = 0, .Maximum = 59, _
             .Anchor = 4, .Location = New Point(160, 0), .Size = New Point(35, 18)}
        Dim Seconde As New NumericUpDown With {.Name = "Seconde", _
                                               .Minimum = 0, .Maximum = 59, _
              .Anchor = 4, .Location = New Point(200, 0), .Size = New Point(35, 18)}
        Sub initializeConcept()
            Tableau.Controls.Add(AxeLabel)
            Tableau.Controls.Add(AxeBox)
            Tableau.Controls.Add(Valeur)
            Tableau.Controls.Add(Minute)
            Tableau.Controls.Add(Seconde)
        End Sub
#End Region
        Property Coordonnee As SexaCoordonnee
            Get
                Dim Temp As New SexaCoordonnee
                Temp.Sexagesimal = {Valeur.Value, Minute.Value, Seconde.Value}
                Temp.Axe = AxeBox.Text
                Return Temp
            End Get
            Set(ByVal value As SexaCoordonnee)
                Dim Temp() As Byte = value.Sexagesimal
                AxeBox.Text = value.Axe
                Valeur.Value = Temp(0) : Minute.Value = Temp(1) : Seconde.Value = Temp(2)
            End Set
        End Property
        Sub New()
            initializeConcept()
        End Sub
    End Class

    Class SexaPoint
        Dim Nom As String = ""
        Friend Longitude As New SexaCoordonnee
        Friend Latitude As New SexaCoordonnee
        Friend Property Text As String
            Get
                Dim S As String
                S = Latitude.Text & "\" & Longitude.Text
                Return S
            End Get
            Set(ByVal StrPos As String)
                Dim S() As String = StrPos.Split("\")
                For i As Integer = 0 To 1                   
                    If (S(i).Split(":")(0) < "ouest") Then
                        Latitude.Text = S(i)
                    Else
                        Longitude.Text = S(i)
                    End If
                Next
            End Set
        End Property
    End Class

    Class SexaCube
        Friend Bord() As SexaCoordonnee
        Function Height() As Decimal
            Return Bord(Sexagesimal.Nord).Value + Bord(Sexagesimal.Sud).Value
        End Function
        Function Width() As Decimal
            Return Bord(Sexagesimal.Ouest).Value + Bord(Sexagesimal.Est).Value
        End Function
        Function Point(ByVal Longitude As Sexagesimal, ByVal Latitude As Sexagesimal) As SexaPoint
            Dim Temp As New SexaPoint
            Temp.Longitude = Bord(Longitude)
            Temp.Latitude = Bord(Latitude)
            Return Temp
        End Function
#Region "DECLARE CONCEPT"
        Dim User As New Panel With {.Name = "Panneau", _
             .Anchor = 13, .Location = New Point(0, 0), .Size = New Point(300, 300)}
        Dim Cadre() As SexaBox
        Sub initializeConcept()
            For i As Sexagesimal = "North" To "East"
                Cadre(i) = New SexaBox
                Cadre(i).Tableau.Location = New Point(Cadre(i).Tableau.Location.X, i * 20)
                User.Controls.Add(Cadre(i).Tableau)
            Next
        End Sub
#End Region
        Sub New()
            initializeConcept()
        End Sub
    End Class

    Class SexaRepere
        Dim Mesures As Size
        Dim Echelle As Point
        Dim Repere As SexaCube
        Property Taille As Size
            Get
                Dim Tab As New Size
                Tab.Height = Echelle.Y * Mesures.Height
                Tab.Width = Echelle.X * Mesures.Width
                Return Tab
            End Get
            Set(ByVal value As Size)
                Mesures.Height = value.Height / Echelle.Y
                Mesures.Width = value.Width / Echelle.X
            End Set
        End Property
        Function Plot(ByVal Gite As SexaPoint) As Point
            Dim Position As New Point
            Position.Y = (Gite.Latitude.Value * Taille.Height + Repere.Bord(Sexagesimal.Sud).Value) / Repere.Height
            Position.X = (Gite.Longitude.Value * Taille.Width + Repere.Bord(Sexagesimal.Est).Value) / Repere.Width
            Return Position
        End Function
        Function Plot(ByVal Position As Point) As SexaPoint
            Dim Gite As New SexaPoint
            Gite.Longitude.Value = (Position.X * Repere.Width - Repere.Bord(Sexagesimal.Est).Value) / Taille.Width
            Gite.Latitude.Value = (Position.Y * Repere.Height - Repere.Bord(Sexagesimal.Sud).Value) / Taille.Height
            Return Gite
        End Function
    End Class

End Module


Faut-il continuer ?
Je vais commencer par encapsuler tout ca dans des Tabcontroles pur laisser de la place au développements,
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.