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 :

Tracer une ligne sur un picturebox ou imprimer [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Tracer une ligne sur un picturebox ou imprimer
    Bonjour,
    je débute avec la programation en visualbasic. Je m'aide du cours qui est en postit du forum et qui est tres interessant.

    Je viens vous demander des explications sur ce que je souhaiterais faire:

    - J'ai créé un module qui permet de tracer une ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Module MOD_tracer
        Sub tracer(ByVal g)
            g.DrawLine(Pens.Blue, 0, 0, 500, 300)
        End Sub
    End Module

    - En cliquant sur le bouton 1, je trace la ligne dans la picturebox PB1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Newbitmap As Bitmap = New Bitmap(500, 300)
            Dim g As Graphics = Graphics.FromImage(Newbitmap)
     
            Call tracer(g)
     
            PB1.Image = Newbitmap
        End Sub
    - En cliquant sur le bouton 2, j'aimerai imprimer sur une feuille la ligne. J'ai donc rajouté un printdocument1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Call tracer(g)
        End Sub
     
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            PrintDocument1.Print()
        End Sub
    C'est sur ce point ou je bloque : Le logiciel ne veut pas lancer le module : Le nom "g" n'est pas déclaré. Mon probleme est que je ne comprends pas comment je dois déclarer g pour une impression avec l'imprimante par defaut.

    Merci de vos réponses.

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour Finouli68.
    IL examiner ta logique de code.
    operation 1: tu as creer une Sub qui dessine un graphisme sur un bitmap.
    operation 2: tu affiches ce bitmap dans un picturebox.
    operation 3: mais au fait imprimer quoi ?.
    Probablement le bitmap ou l'image du picturebox.C'est pareil dirais-tu.
    Mais si j'appele la sub tracer je vais refaire le travail.
    Alors imprimons le bitmap(ou le picturebox.image c'est pareil) ,il n' y a rien à modifier pratiquement:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
     
    Public Class Form1
    	'declarer  ton Newbitmap dans la porte classe pour qu'il soit 
    	'accessible dans Event PrintPage
    	Private Newbitmap As Bitmap
     
    	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    		Newbitmap = New Bitmap(500, 300)
    		Dim g = Graphics.FromImage(Newbitmap)
     
    		Call tracer(g)
     
    		Me.PictureBox1.Image = Newbitmap
    	End Sub
     
    	Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    		PrintDocument1.Print()
     
    	End Sub
    	Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
    		'Si Newbitmap ne contient aucun graphisme retour 
    		If Newbitmap Is Nothing Then Return
     
    		' Dessine le Newbitmap
    		e.Graphics.DrawImage(Newbitmap, e.Graphics.VisibleClipBounds)
     
    		' c'est la derniere page .
    		e.HasMorePages = False
     
     
    	End Sub
     
     
    End Class
    Une 2eme methode "expeditive" consiste à eliminer le bouton 1
    et le remplacer par une sub Utilite mais c'est pour les gens partisan du moindre effort:
    code:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Public Class Form2
    	'declarer  ton Newbitmap dans la porte classe pour qu'il soit 
    	'accessible dans Event PrintPage
    	Private Newbitmap As Bitmap
    	'replace le button1
    	Private Sub Utilite()
    		Newbitmap = New Bitmap(500, 300)
    		Dim g = Graphics.FromImage(Newbitmap)
     
    		Call tracer(g)
     
    		Me.PictureBox1.Image = Newbitmap
    	End Sub
    	'quand on clique sur button2 on trace et imprime d'un seul "coup" 
    	Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    		Utilite()
    		PrintDocument1.Print()
     
    	End Sub
    	Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
    		'Si Newbitmap ne contient aucun graphisme retour 
    		If Newbitmap Is Nothing Then Return
     
    		' Dessine le Newbitmap
    		e.Graphics.DrawImage(Newbitmap, e.Graphics.VisibleClipBounds)
     
    		' c'est la derniere page .
    		e.HasMorePages = False
     
     
    	End Sub
     
     
    End Class
    bon code.....................

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    merci pour votre réponses.

    J'ai bein compris la méthode pour faire copier à l'imprimante le dessin de la picturebox.

    Mais en fait ce que je voulais faire, c'est
    - soit tracer la ligne du module sur la picturebox en cliquant sur un bouton (donc ça ça marche tres bien)

    - Soit tracer la ligne du module sur l'imprimante par defaut de windows en cliquant sur un bouton.

    c'est pour ça que j'ai crée le module.

    En résumé :

    Si je clique sur bouton 1, ce que le module contient est dessiné sur le picturebox.

    Si je clique sur le bouton 2, ce que le module contient est imprimé.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    sur un évènement la variable e contient souvent des trucs utiles pour l'évènement
    pour l'évènement printpage, e contient un graphics, celui que tu cherches

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call tracer(e.graphics)

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Nickel c'est exactement ce que je cherchais !

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 18/09/2011, 13h45
  2. [JpGraph] tracer une ligne sur le graphe
    Par Papy214 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 25/06/2010, 11h01
  3. Tracer une ligne sur entête ou pied de page
    Par thomas yannick dans le forum Débuter
    Réponses: 0
    Dernier message: 28/08/2008, 18h27
  4. Tracer une ligne sur un graphique ACCESS
    Par taisherg dans le forum Access
    Réponses: 1
    Dernier message: 21/05/2007, 16h26
  5. Tracer une ligne sur une image
    Par Guillaume602 dans le forum Windows
    Réponses: 5
    Dernier message: 05/01/2006, 20h33

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