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

Windows Forms Discussion :

Impression de Form.


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Par défaut Impression de Form.
    Bonjour,

    J'ai une Form avec des images (via picturebox) que je destine à l'impression.

    Dans un premier temps puisque j'aimerai qu'elle s'imprime sur format A4, je lui ai donné des dimensions de 600;424, ce qui me semble être le plus proche proportionnellement et qui me permet d'avoir une vue d'ensemble en mode conception. Est-ce une bonne démarche? Y a t-il un format encore mieux adapté?

    Deuxièmement la barre de menu s'inscrit dans la Form. Faut il délimiter d'une certaine manière la zone qui sera imprimable dans la Form et par conséquent adapter les dimensions de cette zone à celle du format d'impression

    Et enfin dernièrement, avant de rentrer dans les toutes les subtilités de choix du paramétrage d'impression liés à l'originalité de chaque projet, j'aimerai pouvoir imprimer rapidement ma Form ou plus exactement ma "feuille résultat".
    Existe t-il des ressources standards qui me permettrait de sauter pour l'instant les étapes de conception.

    Merci.
    Pascal

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    y a quelques jours je crois avoir vu quelqu'un demander comment imprimer ses form
    fait une recherche pour voir ce qui lui a été répondu

    le principe c'est d'avoir une variable image contenant le dessin de la fenetre
    puis via l'objet dessiner l'image obtenu sur un printdocument

    après les proportions, on s'en fout un peu, c'est à toi de calculer le zoom nécessaire pour prendre le plus de place sur la feuille, et y aura surement des bandes blanches autour de la feuille, meme en respectant les proportions A4
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Par défaut
    j'essaye d'entretenir mes neurones, mais je n'ai plus 20ans, j'en ai 52 et pourtant je suis probablement le plus débutant des débutants de ce forum puisque cela ne fait que 3 jours que j'essaye de faire un petit programme pour mes élèves (hé oui, je suis prof).

    Je suis allé voir le post de la semaine dernière, j'ai copier l'exemple de microsoft pour imprimer le formulaire en cours et je l'ai collé dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Private Sub ImpressionToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImpressionToolStripMenuItem.Click
     
        End Sub
    End Class
    là le débogage me déclare 13 erreurs, par conséquent je pense que ce n'est pas placé au bon endroit.

    J'ai donc fait un essai sur une Form vide et là il n'y a plus que 3 erreurs, mais 3 tout de même.

    Erreur 1 La clause Handles requiert une variable WithEvents définie dans le type conteneur ou l'un de ses types de base. C:\Documents and Settings\Administrateur\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 27 8 WindowsApplication1
    Erreur 2 La clause Handles requiert une variable WithEvents définie dans le type conteneur ou l'un de ses types de base. C:\Documents and Settings\Administrateur\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 31 34 WindowsApplication1
    Erreur 3 Le nom 'PrintDocument1' n'est pas déclaré. C:\Documents and Settings\Administrateur\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 33 9 WindowsApplication1
    Où est la mienne d'erreur?


    Dans mon formulaire, je le rappelle, j'ai placé un barre de menu. Avec cette méthode
    X-H-1-f. Imprime le formulaire en cours
    est ce que je ne risque pas d'avoir une impression également de la barre de menu?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Par défaut
    Allez je me jette à l'eau.
    dans un premier temps j'en suis là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Class Form1
     
        Private Sub ImprimerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImprimerToolStripMenuItem.Click
            PrintDialog1.ShowDialog()
        End Sub
    End Class
    ce qui me permet de retrouver la boite de dialogue de mon imprimante.
    Maintenant j'aimerai mettre en application
    le principe c'est d'avoir une variable image contenant le dessin de la fenetre
    puis via l'objet dessiner l'image obtenu sur un printdocument
    ce qui, si j'ai bien compris, va me permettre d'imprimer une partie de mon formulaire.
    Mais c'est encore un petit peu trop complexe pour moi. est ce que je peux avoir un cheminement un peu plus détaillé. je suis allé voir dans la rubrique dessiner et imprimer de P Lasserre, mais je n'arrive pas à faire de lien entre l'impression et la notion de dessin.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    un autre type de code, pas de bitblt (enfin pas directement)

    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
    Public Class Form1
     
        Private Const WM_PRINT As Integer = &H317
        Private Const PRF_CLIENT As Integer = &H4
        Private Const PRF_CHILDREN As Integer = &H10
     
     
        Private WithEvents _PrintDocument As New System.Drawing.Printing.PrintDocument ' déclaration de l'objet qui sert à imprimer
     
     
        Private _ImageForm As System.Drawing.Bitmap
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim hdc As IntPtr = IntPtr.Zero
            Dim g As System.Drawing.Graphics = Nothing
     
            Try
                _ImageForm = New System.Drawing.Bitmap(Me.ClientRectangle.Width, Me.ClientRectangle.Height) ' on créé l'image à la bonne taille
                g = System.Drawing.Graphics.FromImage(_ImageForm) ' on instancie g en disant que tout ce qui est fait sur ce graphics est fait aussi sur l'image
                hdc = g.GetHdc ' récupération du handle windows de ce graphics
                Dim wParam As IntPtr = hdc
                Dim lParam As IntPtr = New IntPtr(PRF_CLIENT Or PRF_CHILDREN)
                Dim msg As System.Windows.Forms.Message = System.Windows.Forms.Message.Create(Me.Handle, WM_PRINT, wParam, lParam)
                MyBase.WndProc(msg)
     
                ' ici img contient l'image de la form snas la barre de titre 
                _PrintDocument.Print() ' demande l'impression, ca déclenche en fait l'évènement printpage, géré plus bas
     
            Catch ex As Exception
                MsgBox("Erreur pendant la génération de l'impression")
            Finally
                If g IsNot Nothing Then
                    If hdc <> IntPtr.Zero Then g.ReleaseHdc(hdc) ' dans tous les cas il faut relacher le handle
                    g.Dispose()
                End If
            End Try
        End Sub
     
     
        Private Sub Impression(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _PrintDocument.PrintPage
            Try
                If _ImageForm Is Nothing Then
                    MsgBox("Erreur pendant la génération de l'impression #2")
                End If
                Dim srcrect As New System.Drawing.Rectangle(0, 0, _ImageForm.Width, _ImageForm.Height)
                Dim destrect As New System.Drawing.Rectangle ' reste à coder destrect pour qu'il zoome l'image
                destrect.X = CInt(e.PageSettings.PrintableArea.X) ' en attendant je le mets à stretch sur la page
                destrect.Y = CInt(e.PageSettings.PrintableArea.Y)
                destrect.Width = CInt(e.PageSettings.PrintableArea.Width)
                destrect.Height = CInt(e.PageSettings.PrintableArea.Height)
     
     
                e.Graphics.DrawImage(_ImageForm, destrect, srcrect, GraphicsUnit.Document)
            Catch ex As Exception
                MsgBox("Erreur pendant l'impression")
            End Try
        End Sub
     
    End Class
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [XL-2007] Impression de formes impossible
    Par roms_22 dans le forum Excel
    Réponses: 0
    Dernier message: 04/05/2011, 15h37
  2. Creation de report ou impression de form?
    Par garciajulien dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/03/2010, 13h00
  3. Réponses: 0
    Dernier message: 31/01/2009, 14h29
  4. [Forms]le Bouton d'impression avec Forms sous oracle
    Par samba2005kanoute dans le forum Forms
    Réponses: 30
    Dernier message: 02/01/2007, 16h21
  5. Acrobat reader: impression sous forme de diapositives
    Par mauriiice dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 12/09/2006, 15h14

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