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 :

Impression mode d'emploi


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Par défaut Impression mode d'emploi
    Bonjour à tous,

    Une question simple mais pour laquelle je tourne en rond depuis quelques soirs :
    Comment créer un document et l'imprimer dynamiquement ?

    Je m'explique : Je fais apparaitre des boites de dialogues et je veux imprimer un document en fonction des réponses.
    Pour l'instant, j'arrive à créer un Graphics en fonction des réponses et à le sauvegarder au format BMP.
    C'est quant il s'agit d'imprimer ce graphique que ça coince ! Je ne sais pas comment m'y prendre pour passer mon graphics au printdocument ... Je ne vais tout de même pas créer un fichier et l'imprimer, ce serait super moche

    Je suis sûr que la solution est simple, mais je ne l'ai pas

    Y a t'il quelqu'un pour me donner une solution , un tuto, une explication, une piste ...

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Par défaut
    Salut glop-pas glop,

    voici une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
     
            Dim bmp As New Bitmap(Me.Width, Me.Height, Imaging.PixelFormat.Format64bppPArgb)
     
            e.Graphics.PageUnit = GraphicsUnit.Document
            Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height))
            e.Graphics.DrawImage(bmp, 10, 10)
     
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow
     
        End Sub
    voici une autre possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    For Each obj In Me.Controls
     
     
                    e.Graphics.DrawString(obj.text, obj.font, Brush, obj.location.x, obj.location.y)
    Next
    en espérant avoir répondu à ta question....

    Madfox48

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Par défaut
    Merci de ta réponse.

    Dans ton exemple, je ne vois pas bien a quelle moment on fait le lien entre le "Graphics" que j'ai créé (qui ne ressemble pas du tout à mon form) et le "PrintDocument"

    Merci de ton aide

    Pas Glop

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Par défaut
    Pas glop,

    Pour la première ou la seconde solution?

    madfox48

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Par défaut
    Finalement je me suis inspiré de ton deuxième exemple et j'ai compris la philosophie des objets de type Graphics

    Pour info voici mon code si ça peut en aider d'autre :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    Private Function getBMPToPrint() As Bitmap
     
     
            Dim Hauteur As Integer = 3508
            Dim largeur As Integer = 2480
            Dim F As New Font("Arial", 20, FontStyle.Bold) 'Create a font
            Dim B As New SolidBrush(Color.Black) 'Create a brush
            Dim blackPen As New Pen(Color.Black, 5)
     
            'Create a new bitmap
            Dim Bmp As New Bitmap(largeur, Hauteur, Imaging.PixelFormat.Format32bppPArgb)
            Dim MyGraphics = Graphics.FromImage(Bmp)
     
            Bmp.SetResolution(300, 300) 'Set the resolution to 300 DPI
     
            MyGraphics = Graphics.FromImage(Bmp) 'Create a graphics object from the bitmap
     
            MyGraphics.Clear(Color.White) 'Paint the canvas white
            'Set various modes to higher quality
            MyGraphics.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
            MyGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
            MyGraphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
     
            ' On crée le cadre
            MyGraphics.DrawRectangle(blackPen, 100, 100, largeur - 200, Hauteur - 200)
            MyGraphics.DrawRectangle(blackPen, 100, 100, largeur - 200, 200)
            MyGraphics.DrawRectangle(blackPen, 100, 100, 500, 200)
            MyGraphics.DrawRectangle(blackPen, largeur - 600, 100, 500, 200)
     
     
            MyGraphics.DrawString("Mon beau document", F, B, (largeur / 2 - 200), 150)
     
            ' Insertion des logo
            Dim ImagePath As String
            ImagePath = Application.StartupPath & "\Image"
     
            Try
                MyGraphics.DrawImage(Image.FromFile(ImagePath & "\MonImage.jpg"), New Point(110, 110))
            Catch ex As Exception
                MessageBox.Show(ImagePath & "\MonImage.jpg non trouvé (" & ex.Message & ")")
            End Try
     
            Return Bmp
     
        End Function
     
     
        Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
     
            PrintPreviewDialog1.ShowDialog()
     
        End Sub
     
        ' Appelé lors des demande d'impression
        Private Sub PrintDocument1_PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
            e.Graphics.DrawImage(getBMPToPrint, 10, 10)
     
        End Sub
    Un grand merci d'avoir éclairé ma lanterne

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

Discussions similaires

  1. Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 03/06/2013, 17h36
  2. [débutante][Concept] Destruction d'objet, mode d'emploi?
    Par skea dans le forum Général Java
    Réponses: 4
    Dernier message: 12/06/2004, 21h48

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