none
Tracer des lignes dans une PictureBox au démarrage RRS feed

  • Question

  • Salut !

    Dans VB 2008, je sais comment tracer des lignes avec la méthode CreateGraphics mais le problème se pose au démarrage de la form. Les lignes ne sont pas tracées. J'ai tenté de mettre Me.Show avant le traçage mais rien n'y fait. Lorsque je mets les codes dans un bouton, les lignes sont tracées au moment du clic mais moi je voudrais qu'elle se tracent toutes seule au démarrage.

    Dans VB 6, il y avait PictureBox.AutoRedraw = True pour rendre le graphique permanent mais visiblement ce n'est plus nécessaire avec VB 2008.

    Merci pour votre aide.

    dimanche 5 juin 2011 11:43

Réponses

  • Visiblement il n'y a plus d'équivalent à AutoRedraw, il faut à la place gérer les graphismes dans l'évènement Paint.

    Source : http://www.vbfrance.com/forum/sujet-EQUIVALENT-AUTOREDRAW-VB-NET-2005_1071200.aspx

     


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.
    • Proposé comme réponse Michel K dimanche 5 juin 2011 14:03
    • Marqué comme réponse Ciprian Duduiala jeudi 9 juin 2011 06:41
    dimanche 5 juin 2011 12:07
  • J'ai opté pour le second code qui marche à merveille ! Je l'ai bien sûr adapté pour ma PictureBox.
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Dim MyImage As New Bitmap(Me.ClientRectangle.Width, Me.ClientRectangle.Height)
     Dim g As Graphics = Graphics.FromImage(MyImage)
     g.Clear(Color.BlanchedAlmond)
     g.DrawString("Salut", Me.Font, Brushes.Blue, 100, 100)
     Me.BackgroundImage = MyImage
    End Sub
    
    Merci pour ton aide !
    • Proposé comme réponse Michel K dimanche 5 juin 2011 14:03
    • Marqué comme réponse Ciprian Duduiala jeudi 9 juin 2011 06:41
    dimanche 5 juin 2011 12:34

Toutes les réponses

  • Bonjour MicSoft,

    Avez-vous essayé PictureBox.Refresh() ?

     


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.
    dimanche 5 juin 2011 11:53
  • Je viens de le faire mais cela ne donne rien. Pire, lorsque je minimize la fenêtre, les lignes ont disparu une fois la fenêtre ouverte. Il doit y avoir une variante de AutoRedraw pour fixer le graphique mais comment s'appelle t-elle ?
    dimanche 5 juin 2011 12:01
  • Visiblement il n'y a plus d'équivalent à AutoRedraw, il faut à la place gérer les graphismes dans l'évènement Paint.

    Source : http://www.vbfrance.com/forum/sujet-EQUIVALENT-AUTOREDRAW-VB-NET-2005_1071200.aspx

     


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.
    • Proposé comme réponse Michel K dimanche 5 juin 2011 14:03
    • Marqué comme réponse Ciprian Duduiala jeudi 9 juin 2011 06:41
    dimanche 5 juin 2011 12:07
  • J'ai opté pour le second code qui marche à merveille ! Je l'ai bien sûr adapté pour ma PictureBox.
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Dim MyImage As New Bitmap(Me.ClientRectangle.Width, Me.ClientRectangle.Height)
     Dim g As Graphics = Graphics.FromImage(MyImage)
     g.Clear(Color.BlanchedAlmond)
     g.DrawString("Salut", Me.Font, Brushes.Blue, 100, 100)
     Me.BackgroundImage = MyImage
    End Sub
    
    Merci pour ton aide !
    • Proposé comme réponse Michel K dimanche 5 juin 2011 14:03
    • Marqué comme réponse Ciprian Duduiala jeudi 9 juin 2011 06:41
    dimanche 5 juin 2011 12:34
  • J'ai rencontré le même problème et je viens de trouver la solution en traçant mes lignes dans un RectangleShape à la place d'un PictureBox; le code de traçage est placé dans la procédure d'événement paint du rectangleshape, et c'est tout !

        

    Public Class Form1

        Private Sub RectangleShape1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles RectangleShape1.Paint
            Dim trait As New System.Drawing.Pen(Color.Black, 1)
            Dim g As System.Drawing.Graphics = ShapeContainer1.CreateGraphics()
            '** rectangleshape de dimensions 800x600 avec backcolor = white et backstyle=opaque
            For i% = 0 To 8
                g.DrawLine(trait, RectangleShape1.Left, RectangleShape1.Top + 60 + i% * 60, RectangleShape1.Left + RectangleShape1.Width, RectangleShape1.Top + 60 + i% * 60)
                g.DrawLine(trait, RectangleShape1.Left + 80 + i% * 80, RectangleShape1.Top, RectangleShape1.Left + 80 + i% * 80, RectangleShape1.Top + RectangleShape1.Height)
            Next i%

            g.Dispose()
            trait.Dispose()

        End Sub

    End Class

     
    • Proposé comme réponse jupiter76 lundi 8 septembre 2014 15:47
    lundi 8 septembre 2014 15:30