PictureBox effacé par inputbox !

garfieldfido Messages postés 2 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 23 mai 2006 - 23 mai 2006 à 11:05
garfieldfido Messages postés 2 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 23 mai 2006 - 23 mai 2006 à 21:06
Bonjour,

j'ai un petit problème avec un controle picturebox?
- j'arrive tres bien afficher le codebarre dans mon piturebox. mais en faite
effacer à moitier par mon inputbox pour demander le code à afficher.
je peu déplacer la fenêtre de mon inputbox mais bon c'est pas terrible.

quelqu'un a une solution ?
voici mon code
je débute en VB NET 2005

Cordialement,
Ludovic Mary

Private Sub PictureBox1_DoubleClick(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles PictureBox1.DoubleClick

Dim CodeBarre As String

Dim MaskBinaire As String

'il est la le méchant !!
CodeBarre = InputBox("Entrer le codebarre :", "CodeBarre")

If CodeBarre = "" Then

Exit Sub

End If

'=== Calcul du caractère de contrôle.

CodeBarre = CalculNumControlCodeBarre(CodeBarre)

'=== Génération du mask "binaire"

MaskBinaire = EAN13_Binaire(CodeBarre)

Dim nHauteur As Integer = 80

Dim nHautDec As Integer = 10

Dim EpaisseurTrait As Single = 2

Dim Calibrage As Integer = 1

Dim Col As Integer = 10

Dim Lig As Integer = 10

Call CodeBarre_Pict(MaskBinaire, PictureBox1, nHauteur, nHautDec,
EpaisseurTrait, Calibrage, Col, Lig)

End Sub

 Public Sub CodeBarre_Pict(ByRef MaskCodeBarre As String, ByRef PictureBox1
As PictureBox, ByRef nHauteur As Integer, ByRef nHautDec As Integer, ByRef
EpaisseurTrait As Short, ByRef CalibrageTrait As Short, ByRef Col As
Integer, ByRef Lig As Integer)

        '// Col,Lig         = Position dans la Picturebox
        '// nHauteur        = Hauteur du code barre

        '// nHautDec        = Hauteur supplémentaires des traits de
séparation
        '// MaskCodeBarre   = Profil binaire sous forme de "0" et "1" à
imprimer

        Dim NumCar As Integer ' Position dans le mask "binaire
        Dim NbTrait As Integer ' Nb de lignes à tracer
        'Dim Epaisseur1Trait As Double   ' Epaisseur d'un trait
        Dim i As Short ' Indice de boucle
        Dim X As Single
        ' Abscisse de la ligne à tracer dans la PictureBox
        Dim nLen As Integer ' Taille du mask "binaire"
        Dim blackPen As New Pen(Color.Black, 2)
        Dim oGraphics As System.Drawing.Graphics =
PictureBox1.CreateGraphics()

        ' Nombre de caractères à analyser
        nLen = Len(MaskCodeBarre)
        ' Calcul de l'épaisseur d'un trait suivant la largeur demandée et le
nombre de traits
        ' On comptabilise les caractères "+" et "-" même s'ils ne sont pas
imprimés (négligeable)

        'décalage par rapport à l'impression ? a voir
        'Col = Col + 100
        X = Col + EpaisseurTrait '* 7 ' Décalage vers la gauche pour le
chiffre affiché dessous

        'décalage par rapport à l'impression ? a voir
        'Lig = Lig + 300

        NumCar = 1

        oGraphics.Clear(Color.White)

        'Generation des lignes
        Do While NumCar <= nLen
            Select Case Mid(MaskCodeBarre, NumCar, 1)
                Case "-" ' Indicateur de diminution de hauteur de barre...
                    nHauteur = nHauteur - nHautDec
                    NumCar = NumCar + 1
                Case "+" ' Indicateur d'augmentation de hauteur de barre...
                    nHauteur = nHauteur + nHautDec
                    NumCar = NumCar + 1
                Case "0" ' Espace
                    X = X + EpaisseurTrait
                    NumCar = NumCar + 1
                Case "1" ' Barre
                    'Regroupe tous les '1' successif du mask "binaire" pour
gagner du temps
                    NbTrait = 0
                    Do While Mid(MaskCodeBarre, NumCar, 1) = "1"
                        NbTrait = NbTrait + 1
                        NumCar = NumCar + 1
                    Loop

                    For i = 1 To NbTrait
                        oGraphics.DrawLine(blackPen, New Point(X, Lig), New
Point(X, Lig + nHauteur))
                        X = X + EpaisseurTrait
                    Next i
            End Select
        Loop
        oGraphics.DrawString("test", New Font("Courrier", 8,
FontStyle.Bold), Brushes.Black, 10, 95)

        oGraphics.Dispose()
        'oGraphics = Nothing
        Exit Sub
    End Sub

rrrrrr

3 réponses

cs_lolowilou69 Messages postés 23 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 22 janvier 2007
23 mai 2006 à 12:05
Je pense que le probleme est du au fait que tu na pas mis ta picturebox en mode autoredraw.
Vas dans les propriétés de ta picturebox et met autoredraw = true. Je ne vois que cela. Sinon si ce n'est pas ça c'est que ça dépasse mé compétence.lol
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 mai 2006 à 12:25
Il me semble que la propriété Autoredraw n'existe plus en VB.NET !
Il faut mettre le code "dessinant" sur la picturebox dans son evt Paint()
0
garfieldfido Messages postés 2 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 23 mai 2006
23 mai 2006 à 21:06
oui il existe plus autoredraw
merçi c'est ce que j'ai vu sur un autre site
mais j'ai pas exemple bien précis je vais voir ça
rrrrrr
0
Rejoignez-nous