Objet graphique VB dans un objet perso ?

Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015 - 6 janv. 2015 à 10:20
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015 - 8 janv. 2015 à 08:52
Bonjour,
Peut-on utiliser un objet (graphique) Visual Basic dans un objet propre à son programme ?
ex: je voudrai créer un objet "feux de carrefour" qui contiendrait 3 objets graphique VB "OvalShape" que je mettrai successivement à vert/noir, orange/noir et rouge /noir.
Le but étant de pourvoir copier cet objet en plusieurs exemplaires et de créer une "méthode" pour gérer plus facilement le changement d'état.

16 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 janv. 2015 à 10:40
Bonjour,
Oui
Et de manière différente selon ton outil de développement, que tu n'as pas précisé. (tu es ici dans la section générale de Visual Basic, qui comprend plusieurs sous-forums distincts).
0
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015
6 janv. 2015 à 11:46
J'utilise Visual Basic Express 2010.

Phil
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 janv. 2015 à 12:30
Je déplace donc ta discussion vers le sous-forum VB.Net (ton environnement de développement) et laisse la main à un vb.nettiste (ce que je ne suis pas).
0
Bonsoir Phil_95

Difficile d'appréhender comment ton objet "feux de carrefour" est défini précisément.

Je me suis cependant lancé dans un petit exercice pour afficher plusieurs "feux de carrefour" dans un PictureBox


Public Class Oval
    Public Couleur As Color = Color.Green
    Public Position As Point
    Public g As Graphics
    Public Size As Size = New Size(50, 50)

    Public Sub Dessine()
        Dim redBrush As New SolidBrush(Couleur)
        Dim Rect As New Rectangle(Position, Size)
        g.FillPie(redBrush, Rect, 0.0F, 360.0F)
    End Sub

    Public Sub New(ByVal e As Graphics)
        g = e
    End Sub
End Class

Public Class Feux
    Public Ampoule As New List(Of Oval)
    Public Espace As Integer = 60

    Public Sub New(ByVal e As Graphics, Pos As Point)
        Ampoule.Add(New Oval(e))
        Ampoule.Add(New Oval(e))
        Ampoule.Add(New Oval(e))
        Position = Pos
    End Sub

    Public WriteOnly Property Position As Point
        Set(value As Point)
            Dim Ecart As Integer = value.Y
            For Each A As Oval In Ampoule
                A.Position = New Point(value.X, Ecart)
                Ecart = Ecart + Espace
            Next
        End Set
    End Property

    Public Sub Dessine()
        For Each Amp As Oval In Ampoule
            Amp.Dessine()
        Next
    End Sub

End Class

'Que l'on peut utiliser de cette facon dans une Form en ajoutant un Button :

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim A As New Feux(PictureBox1.CreateGraphics, New Point(10, 50))
        A.Ampoule(0).Couleur = Color.Red
        A.Dessine()
    End Sub

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015
6 janv. 2015 à 23:36
Merci pour cet exemple.

Mais en fait, je souhaiterai plutôt créer un modèle de signal dans la partie graphique, lui affecter les propriétés qui vont bien pour le gérer dans le programme et ensuite pouvoir copier ce modèle dans la partie graphique pour le coller aux endroits qui vont bien.

Sinon, j'ai testé le code. J'ai le problème suivant: il y a 2 ampoules rouges et une verte, au lieu de 1 rouge, 1 orange, 1 verte, et je ne vois pas comment corriger la couleur (pb entre "brush" et "color").

Enfin, je ne vois pas comment activer/désactiver les ampoules pendant l'exécution ?
0
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015
7 janv. 2015 à 11:58
Est-il possible de le gérer sous forme de collection d'objets ?

1) dessiner le signal

2) definir une collection signal:
Dim signal As New collection

ajouter les ampoules déjà dessinées
signal.Add ampoule_verte
..
signal.Add ampoule_rouge

ensuite ... ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 janv. 2015 à 12:38
Bon ...
1) je ne connais RIEN à VB.Net
2) je ne sais pas si (comme c'est le casz sous VB6), un contrôle PictureBox est un container sous VB.Net
3) je crois (et n'en suis pas certain) qu'un contrôle Panel (sous VB.Net) :
- est un container
- qu'il peut contenir d'autres contrôles
- que l'on peut définir la propriété couleur de chacun de ces contrôles
Me trompe-je ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 janv. 2015 à 12:49
0
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015
7 janv. 2015 à 13:49
Merci pour vos réponses, mais je crois bien que ma question n'est pas comprise:

Peut-on assembler dans VB des objets graphique VB (en occurrence des "OvalShape"). L'idée est de créer le graphique "à la main" avec la boite à outils et non par du "code".
Je n'arrive pas à "coller" les fameux OvalShape dans un contener (ni les boutons d'ailleurs).

Par contre, comme il s'agit de même type d'objet (signaux) qui va se retrouver en plus de 40 exemplaires sur mon graphique, je voudrai profiter de la POO pour les gérer plus simplement.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 janv. 2015 à 14:52
L'idée est de créer le graphique "à la main" avec la boite à outils et non par du "code".
Je n'arrive pas à "coller" les fameux OvalShape dans un contener (ni les boutons d'ailleurs).

pas clair

contener c.a.d un picturebox un panel ?
0
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015
7 janv. 2015 à 19:26
Oui, c'est ça.

J'ai essayé de coller un "OvalShape" dans un "Groupbox" ou un "Panel": graphique c'est bien attaché (ça se déplace avec). Par contre dans un "Listview" ça ne marche pas.

Après, je ne sais pas comment les liés au niveau du code pour le fonctionnement du programme ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 janv. 2015 à 19:30
Par contre dans un "Listview" ça ne marche pas.

parce-que ce contrôle n'est pas un container, mais un afficheur.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 janv. 2015 à 21:48
Après, je ne sais pas comment les liés au niveau du code pour le fonctionnement du programme ?

Que veux tu faire ?

tu as seulement placé un ovalshape dans un control container
Si tu veux definir un feux de carrefour il faudrait definir ton
propre control avec des méthodes pour décrire le feux de carrefour
0
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015
7 janv. 2015 à 21:50
Ben oui, mais je n'ai aucune idée de comment on fait ça ...
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
7 janv. 2015 à 23:47
0
Phil_95 Messages postés 8 Date d'inscription mardi 6 janvier 2015 Statut Membre Dernière intervention 8 janvier 2015
8 janv. 2015 à 08:52
J'ai lu le lien. Ça m'a l'air complet.
Y'a plus qu'a tester !

Merci.
0
Rejoignez-nous