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 :

Imprimer une form plus grande que l'écran


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut Imprimer une form plus grande que l'écran
    Bonjour à tous,
    J'aimerai permettre aux utilisateurs de mon logiciel d'imprimer une fiche de synthèse.
    Pour ce faire, j'utilise le code suivant :
    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
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Me.ControlBox = False
            Button1.Visible = False
            Me.AutoScroll = False
            Me.Height = Label_Remb2.Bottom + 20
            Me.Width = TextBox_DescriProjet.Left + TextBox_DescriProjet.Width + 25
            Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
     
            Dim PageSetupDialog As New PageSetupDialog()
            PageSetupDialog.Document = PrintDocument1
            PageSetupDialog.PageSettings.Landscape = False
            Me.PrintDocument1.Print()
     
     
            Button1.Visible = True
            Me.ControlBox = True
            Me.AutoScroll = True
            Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable
        End Sub
     
     
        Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Dim bmp As New Bitmap(Me.Width, Me.Height, Imaging.PixelFormat.Format32bppArgb)
            Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height))
            e.Graphics.DrawImage(bmp, 10, 10)
     
        End Sub
    Cependant, la page imprimée s'arrête à la limite de la partie visible de la form (limitée par la taille de l'écran), bien qu'il y ait une grande partie blanche en bas de la page.
    Je ne parviens pas à imprimer les 2 lignes manquantes.

    Quelqu'un aurait une idée pour solutionner mon problème ?

    Merci d'avance.

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    Bonjour,

    j'avais fait un apercu comme ceci avant imprimer :
    Nom : Sans titre.jpg
Affichages : 683
Taille : 156,4 Ko

    voici le code pour un apercu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            PrintPreviewDialog1.Document = PrintDocument1
            CType(PrintPreviewDialog1, Form).WindowState = FormWindowState.Normal
            PrintPreviewDialog1.Size = New System.Drawing.Size(900, 950)
            PrintPreviewDialog1.PrintPreviewControl.AutoZoom = False
            PrintPreviewDialog1.PrintPreviewControl.Zoom = 0.75
            PrintPreviewDialog1.ShowDialog()
        End Sub
     
        Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Dim stringFormat As New StringFormat()
            stringFormat.FormatFlags = StringFormatFlags.DisplayFormatControl
            e.Graphics.DrawString(RichTextBox1.Text, New Font("Microsoft Sans Serif", 8, FontStyle.Regular), Brushes.Black, New Rectangle(20, 20, e.Graphics.VisibleClipBounds.Width - 40, e.Graphics.VisibleClipBounds.Height - 40), stringFormat)
        End Sub
    pour imprimer la page :
    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
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            Dim prn As New Printing.PrintDocument
            Dim pageSettings As System.Drawing.Printing.PageSettings = New System.Drawing.Printing.PageSettings
     
            pageSettings.Landscape = True
            pageSettings.PaperSize = New System.Drawing.Printing.PaperSize("A4", 210, 297)
            pageSettings.Margins.Top = 0
            pageSettings.Margins.Bottom = 0
            pageSettings.Margins.Left = 0
            pageSettings.Margins.Right = 0
     
            prn.DefaultPageSettings = pageSettings
            prn.PrinterSettings.PrinterName.ToString()
     
            AddHandler prn.PrintPage, AddressOf Me.PrintDocument1_PrintPage
            prn.Print()
            RemoveHandler prn.PrintPage, AddressOf Me.PrintDocument1_PrintPage
        End Sub
    j’espère ça aidera à ton probléme,

    Cordialement,

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Il faut virer ces lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Me.AutoScroll = False
            Me.Height = Label_Remb2.Bottom + 20
            Me.Width = TextBox_DescriProjet.Left + TextBox_DescriProjet.Width + 25
    et les remplacer par ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
            Me.Height +=20
            Me.Width  += 25
     
    Me.AutoSize = True
    bon code...

  4. #4
    Membre très actif
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Bonjour à tous les deux, et merci de vous pencher sur mon problème.

    Les corrections proposées par MABROUKI laissent mon problème inchangé.

    Le code que me propose hacker59 est intéressant, mais ne me permet pas d'obtenir le résultat escompté, notamment avec la ligne ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.Graphics.DrawString(RichTextBox1.Text, New Font("Microsoft Sans Serif", 8, FontStyle.Regular), Brushes.Black, New Rectangle(20, 20, e.Graphics.VisibleClipBounds.Width - 40, e.Graphics.VisibleClipBounds.Height - 40), stringFormat)
    je ne cherche pas à imprimer une richtextbox, mais bien la form entière ...
    J'ai essayé d'utiliser le code ci-dessous, mais il ne fonctionne pas (Me est incompatible avec DrawString)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.Graphics.DrawString(Me, New Font("Microsoft Sans Serif", 8, FontStyle.Regular), Brushes.Black, New Rectangle(20, 20, e.Graphics.VisibleClipBounds.Width - 40, e.Graphics.VisibleClipBounds.Height - 40), stringFormat)
    Comment pourrais-je l'adapté pour imprimer la form complète ?

    Merci d'avance pour vos réponses

  5. #5
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Probablement que ton Form dont j'ignore les dimensions en pixels ,mais converties "automatiche" en millimètres dépassent le format choisi (en mm) de page...

    Dans ce cas Graphics.PageScale est ton ami
    code exemple .vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' Change the page scale.  
        e.Graphics.PageScale = 0.90F
    bon code...

  6. #6
    Membre très actif
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Bonjour à tous,
    Désolé pour cette réponse tardive.
    Vos propositions de correction n'y changent rien : il n'y à que la partie de la form visible à l'écran qui est imprimée.
    Par exemple, mon écran à une résolution de 1024 x768, tout ce qui est au delà de 768 n'est pas imprimé bien que ma form soit pourvue d'un autoscroll ...
    Quelqu'un aurait d'autre piste de solution ?
    Merci d'avance

Discussions similaires

  1. Afficher un dessin plus grand que l'écran
    Par Flow_75 dans le forum Android
    Réponses: 2
    Dernier message: 17/08/2011, 19h15
  2. Div plus grand que l'écran
    Par tabouet dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 25/03/2009, 21h56
  3. Barre de défilement dans une figure plus grande que l'écran
    Par camillechambon dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 23/04/2007, 10h40
  4. Réponses: 4
    Dernier message: 06/01/2006, 18h41
  5. [JFrame] Création d'une fenetre plus grande que l'ecran
    Par thetoctoc dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 23/09/2004, 11h05

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