IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Afficher une droite au démarrage du formulaire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Par défaut Afficher une droite au démarrage du formulaire
    Bonjour à tous !
    Je dessine une droite sur une PictureBox avec la procédure suivante :
    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
     
        ''' <summary>
        ''' Trace la droite verticale
        ''' </summary>
        ''' <param name="nX">Valeur de l'abscisse</param>
     
        Sub TraceLines(ByVal nX As Integer)
            PictureBoxDoublePage.Refresh()
            Dim dFacteur As Decimal = nX / 100
            pHaut = New Point
            With pHaut
                .X = PictureBoxDoublePage.Width * dFacteur
                .Y = 0
            End With
            pBas = New Point
            With pBas
                .X = PictureBoxDoublePage.Width * dFacteur
                .Y = PictureBoxDoublePage.Top + PictureBoxDoublePage.Image.Height
            End With
            Dim gDoublePage As Graphics = PictureBoxDoublePage.CreateGraphics()
            gDoublePage.DrawLine(oPen, pHaut, pBas)
            gDoublePage.Dispose()
     
        End Sub
    J’aimerais que cette droite s’affiche dès que le formulaire apparaît à l’écran. Pourtant, que j’appelle cette procédure à partir du Load, du Refresh, du Paint ou de n’importe quelle méthode du formulaire susceptible d’être déclenchée à son démarrage, la droite disparaît. (Alors qu’elle reste tracée si la procédure ci-dessus est appelée à partir d’un des contrôles du formulaire.)
    Sauriez-vous pourquoi la droite ne s’affiche pas au démarrage du formulaire Windows ? Comment remédier à ce problème ?
    D’avance, je vous remercie beaucoup.
    Avec mes sincères salutations,

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Est-ce que oPen est bien initializé ?

    Et pourquoi ne pas appeler la fonction dans le constructeur après InitializeComponents()?

  3. #3
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Je pense que la procédure habituelle pour cela est de gérer l'évènement OnPaint de la PictureBox et de placer ce code à l'intérieur de cet évènement.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    les controles winforms se redessinent très souvent
    le redessin appelle la méthode OnPaint qui via un graphics des drawrectangle drawstring et autre fait qu'on voit un bouton puis déclencher l'évènement Paint pour si on veut rajouter quelque chose

    tu dois intégrer ta droite dans ce mécanisme sinon elle est effacée au redessin suivant ton tracage

    donc comme l'a dit moldavi c'est dans l'évènement Paint du picturebox

    NB : .invalidate sur un controle force le redessin et donc l'appel de OnPaint
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Par défaut
    En effet, avec l'évènement Paint du picturebox ça marche.
    Merci à tous pour vos bons conseils
    Avec mes sincères salutations,

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    pour voir la ligne au démarrage, l'appeler depuis le Paint du formulaire, et depuis celui du PictureBox, obliger ce formulaire à redessiner l'ensemble.
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub Form1_Paint(ByVal sender As System.Object, _
                ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
            TraceLines(10)
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub PictureBoxDoublePage_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBoxDoublePage.Paint
            Me.Invalidate()
        End Sub
    et supprimer le Refresh de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sub TraceLines(ByVal nX As Integer)
            'PictureBoxDoublePage.Refresh()
            Dim dFacteur As Decimal = nX / 100

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/04/2009, 19h04
  2. Réponses: 5
    Dernier message: 15/12/2008, 17h15
  3. Afficher une image d'apres un formulaire utilisant input type="file"
    Par kilian67 dans le forum Général JavaScript
    Réponses: 33
    Dernier message: 17/08/2008, 22h12
  4. [PEAR][HTML_QuickForm] Comment afficher une page après validation du formulaire ?
    Par jpinfotech dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 27/11/2006, 15h58
  5. comment afficher une image animée dans un formulaire
    Par dadamovic dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/05/2006, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo