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 d'un panel


Sujet :

VB.NET

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut Impression d'un panel
    Bonjour tout le monde,

    Alors voila le souci : (je suis sur visual 2010)

    J'ai une appli avec 3 onglets, le 1er sert à faire une sélection de choses et d'autres se trouvant en base (SQLServer), le 2ème à ajouter des trucs à la mano (photo, texte...), et au fur et à mesure des sélections et saisies tout ce qui est sélectionné est affiché sur le 3ème.

    - Les photos sont mises dans des pictureBox
    - Le texte est mis dans des textBox, des RichTextBox, des Labels ...
    - Tout ces mignons petits composants sont eux sur un panel, parce que moi je me suis dit "ça va être simple, à la fin je vais faire un bouton "imprimer" et il va me balancer le panel vers pdfCreator ou un truc dans le genre!"

    Problème : impossible de trouver un moyen d'imprimer le panel dans son ensemble, je ne trouve que des sujets de discussions pour imprimer des RichTextBox seule ou des sources pour imprimer des composants mais seuls de toutes façons.

    Alors si quelqu'un à une solution je suis preneur, merci de votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
        ''' <summary>
    ''' Capture de la zone d'impression
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub CaptureScreen()
     
    Dim myGraphics As Graphics = Me.CreateGraphics()
    'On imprimera la tab_control, on récupère donc la taille de l'un d'entre eux, sahcant qu'ils ont tous la même taille
    Dim s As Size = Me.tc_etape0.Size
    'On définit une image de la taille du tab_control
    memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
    Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
    Dim point As Point
    'On récupère le pojnt supérieur gauche du tab_control
    point = tc_etape0.PointToScreen(New Point(0, 0))
    'On capture l'écran à partir de ce point, avec les dimensions du tabcontrol
    memoryGraphics.CopyFromScreen(point.X, point.Y, 0, 0, s)
     
    End Sub
     
    ''' <summary>
    ''' Redimensionnement de l'image et impression
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub printDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
    'On récupère l'image à imprimer
    Using MyGr As Graphics = e.Graphics
     
    'On calcule le ratio pour la largeur de l'image
    Dim LargImage As Double = memoryImage.Width / memoryImage.HorizontalResolution * 100
    Dim RapX As Double = e.MarginBounds.Width / LargImage
    'On calcule le ratio pour la hauteur de l'image
    Dim HautImage As Double = memoryImage.Height / memoryImage.VerticalResolution * 100
    Dim RapY As Double = e.MarginBounds.Height / HautImage
    'On garde le ratio le plus petit pour redimensionner l'image afin que l'image imprimée ne sois pas coupée
    RapX = IIf(RapX < RapY, RapX, RapY)
    Dim RectSortie As New Rectangle(0, 0, Double.Parse(LargImage * RapX), CInt(HautImage * RapX))
    'On définit l'emplacement d'impression de l'image sur la page
    RectSortie.X = e.MarginBounds.X + Double.Parse((e.MarginBounds.Width - RectSortie.Width) / 2)
    RectSortie.Y = e.MarginBounds.Y + Double.Parse((e.MarginBounds.Height - RectSortie.Height) / 2)
    'Et on dessine l'image finale qui sera imprimée
    MyGr.DrawImage(memoryImage, RectSortie)
     
    End Using
     
     
    End Sub
     
    ''' <summary>
    ''' Réglages de l'imprimante et lancement de l'impression
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub printButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImprimerToolStripMenuItem.Click
     
    'Capture de la zone d'impression
    CaptureScreen()
    'Paramétrage
    PrintDocument1.DocumentName = "Valorisation des stocks" & cb_mois.SelectedItem & " " & cb_annee.SelectedItem
    Dim result As DialogResult = PrintDialog1.ShowDialog()
    If result = Windows.Forms.DialogResult.OK Then
    Dim PageSetupDialog As New PageSetupDialog()
    PrintDocument1.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
    PrintDocument1.PrinterSettings.Copies = PrintDialog1.PrinterSettings.Copies
    PageSetupDialog.Document = PrintDocument1
    PageSetupDialog.PageSettings.Landscape = True
    'Impression
    PrintDocument1.Print()
    End If
     
    End Sub
    Voilà ce que j'ai fais pour mon application, je me suis inspiré de code à droite et à gauche.
    PrintDocument1, PrintDialog1 sont des composants PrintDocument et PrintDialog que j'ai glissé sur mon appli.
    Pour ma part j'imprime un tabcontrol, mais ça ne change rien pour un panel.
    Je te laisse voir ça, et essayer de l'adapter.
    Comme je ne maitrisais pas énormément j'ai pas mal commenté ça doit être assez compréhensible, mais si tu as des questions n'hésites pas

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Merci beaucoup c'est exactement ce qu'il me fallait

    par contre là le travail est fini donc je testerais demain

    encore merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Aucun soucis, n'hésite pas si tu as des questions ou si tu vois des améliorations ou problèmes dans mon code.

Discussions similaires

  1. [Débutant] Impression Table Layout Panel et son contenu
    Par Vincent32 dans le forum VB.NET
    Réponses: 25
    Dernier message: 06/04/2017, 13h32
  2. [Débutant] impression d'un panel avec des rectangleshape
    Par jeremyvb11 dans le forum VB.NET
    Réponses: 0
    Dernier message: 24/02/2015, 20h11
  3. Apercu impression panel
    Par Trowa76 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 09/06/2009, 15h20
  4. [VB.NET] Impression, panel de configuration
    Par Nosper dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/10/2006, 04h14
  5. [VB.NET] Impression d'un contrôle Panel
    Par Kénium dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/07/2006, 19h37

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