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

  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

  7. #7
    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
    Merci je viens d'essayer vite fait, avant de partir travailler, avec un formulaire, un label et seulement le bouton de lancement et j'obtiens:

    l'affichage du form
    click sur bouton - page1 sur document et ensuite erreur pendant l'impression et lorsque je clique sur ok l'imprimante sort une page blanche.

    Est ce que je devais entrer des indications complémentaires pour imprimer ?

  8. #8
    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
    ah oui j'ai oublié de préciser, il faut définir l'imprimante à utiliser, l'orientation etc...
    dans le tuto de bidou sur l'objet printdocument ca doit etre expliqué
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    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
    Bien je suis allé voir le tuto en question et je pense honnêtement que ce n'est pas de mon niveau. Je rappelle que cela ne fait que quelques jours que j'essaye de faire un petit programme et l'autodidacte que je suis, se sent plus que souvent désorienté, voire perdu par quelques lignes, que vous percevez comme des évidences.

    A priori ce tutoriel permet de construire et paramétrer un gestionnaire d'impression et l'impression qui suit(ou alors je me suis trompé de tuto). Pour l'instant, moi je ne cherche pas encore le moyen de mettre en forme ce genre de chose. J'aimerai simplement lancer une impression du travail que j'ai placé dans ma Form.

    La base
    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
    avec une barre de menu ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class Form1
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            PrintDialog1.ShowDialog()
     
        End Sub
    End Class
    avec un bouton,
    me permet de lancer le gestionnaire d'impression qui me sert habituellement et où mon imprimante est déjà détectée par défaut. J'aimerai uniquement pour l'instant créer le lien avec ce gestionnaire et le travail à imprimer.

    Est-ce possible, où faut-il vraiment que je réécrive tout un ensemble pour pouvoir imprimer?

  10. #10
    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
    le printdialog sert à sélectionner une imprimante
    une fois l'imprimante choisie, il faut le dire à l'objet printdocument

    je t'ai renvoyé sur ce tuto surtout pour chercher comment définir l'orientation, et l'imprimante à utiliser
    t'as pas besoin de tout lire, tu ne fais une impression complexe, vu qu'il n'y a qu'une image


    sinon le mieux reste d'apprendre les bases si tu ne les a pas, il y a de nombreux tutos vb.net ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    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
    Je crois que nous nous égarons dans nos échanges. Mes questions doivent devenir agaçantes et vos réponses ne m'apportent pas la solution souhaitée.

    Je vais réitérer ma question de manière plus explicite, je l'espère:

    La question de base et celle des ressources disponibles pourraient se traduire de cette manière:

    Existe t-il un code pré-établi qui permet d'imprimer tout ou partie d'un Formulaire, à partir d'une simple action, comme un click de bouton?

    Et serait-il possible d'avoir des réponses de type:

    Oui, avec tel code, (et une petite explication si possible)

    Non, il faut tout construire tout seul, voilà la ligne directrice à suivre et non pas regardez tel tutoriel sans plus d'explications,

    ou alors il faut biaiser pour le faire et voici la démarche à suivre.

    Je rappelle que je cherche juste à obtenir une impression de vérification, je ne cherche pas à concocter toute une procédure d'impression (enfin pas pour l'instant) et pourtant j'ai la sensation d'être toujours réorienter dans cette direction.

    S'il n'est pas possible de manière simple d'arriver à mes fins, pensez vous que la démarche suivante pourrait être réalisable?

    Voici l'élément, à vérifier (imprimer), que j'ai mis en place sur mon Formulaire avec l'aide de Tomlev et de Laedit, qui m'ont pris par la main dans un post précédent pour me permettre d' arriver à mes fins.(ça vous paraît peut-être simple, mais pour moi c'était déjà un grand pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If Clipboard.ContainsImage() Then
                PictureBox1.Image = Clipboard.GetImage
            ElseIf Clipboard.ContainsFileDropList() Then
                Dim fileName As String = Clipboard.GetFileDropList()(0)
                PictureBox1.Image = Image.FromFile(fileName)
            End If
            Button1.Visible = False
        End Sub
     
    End Class
    Est ce qu'un tel code pourrait être adapté à un contrôle picturebox dans writer d'OOO. Y aurait-il de grosses différences d'écriture de code,...? Si une telle adaptation était réalisable, je n'aurais plus de problème pour l'impression. Après je pourrais revenir à mon sujet et suivre mon petit bonhomme de chemin en VB express.

  12. #12
    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
    s'il y avait une ligne de code magique pour imprimer une form tu crois qu'on te l'aurais pas dit ?? (ca existe peut etre, fait une recherche de printform .net sur google ...)

    que tu veuilles imprimer un form, une image, du texte ou un truc complexe, c'est la meme chose
    il faut utiliser l'objet printdocument, et coder ce que tu veux voir sur la form

    après si tu essayes de faire des choses "complexes" sans avoir les bases, c'est pas de notre faute ...
    en plus je t'ai donné un code fonctionnel pour avoir la form sous forme d'image
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Le VB n'étant pas mon langage de prédilection le code est en VB, mais des traducteurs C#/VC existe de part le net.

    Alors, lors du clic sur ton bouton, tu va instancier un PrintDocument, qui va servir à lancer l'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PrintDocument pd = new PrintDocument();
    pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
    pd.Print();

    Et ensuite, dans la méthode pd_PrintPage tu va définir ce que tu veux imprimer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
    {
        ev.Graphics.DrawImage(PictureBox1.Image, 0, 0);
     
        ev.HasMorePages = false;
    }
    En l'occurence, cela va imprimer l'image de la PictureBox1 en définissant son point d'origine en haut à gauche de la feuille imprimée.

    Pour plus d'infos, regarde ce lien : http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  14. #14
    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
    Me revoilà.
    Je me suis penché sur ce que vous m'avez transmis comme indications (pour le code magique, tant pis je ferai sans) . J'ai fait une modification du code envoyé par Pol63, parce que pris dans son intégralité il m'envoyait des pages blanches.
    A priori mon petit "bidouillage" me permet d'imprimer le Formulaire. mais j'ai un petit souci de cadrage.
    voici une copie d'écran de Form1
    [IMG]C:\Documents and Settings\Administrateur\Mes documents\PrintScreen Files[/IMG]
    et voilà ce que j'obtiens en impression
    [IMG]C:\Documents and Settings\Administrateur\Mes documents\PrintScreen Files[/IMG]
    vous pouvez remarquer que l'image est rognée du coté droit et décalé ver le haut.

    On dirait que le format est bien celui de la zone intérieur du formulaire, mais excentré.
    Qu'en pensez-vous?

    Voici les modif effectuée sur le code de pol63
    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
    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 PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
            Dim hdc As IntPtr = IntPtr.Zero
            Dim g As System.Drawing.Graphics = Nothing
     
            Try
                _ImageForm = New System.Drawing.Bitmap(ClientRectangle.Width, 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 sans la barre de titre 
     
            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
     
     
            e.Graphics.DrawImage(_ImageForm, 0, 0, _ImageForm.Width, _ImageForm.Height)
            'partie  imprimé 
        End Sub
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ' le click sur le bouton lance
     
     
            PrintDialog1.ShowDialog()
            'le gestionnaire d'impression standard (celui installé avec votre imprimante en général)
     
            PrintDocument1.Print()
            'lance l'impression au click ok du gestionnaire d'impression
        End Sub
     
    End Class
    nota: les annotations ne sont pas des explications mais juste des aides mémoire pour moi.

  15. #15
    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
    Désolé, j'ai voulu vous envoyer des images, mais à priori j'ai pas fait ce qu'il fallait. Voici les pièces jointes.
    Images attachées Images attachées   

  16. #16
    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
    au niveau de
    e.Graphics.DrawImage(_ImageForm, 0, 0, _ImageForm.Width, _ImageForm.Height)

    il faut utiliser une autre surcharge et redéfinir la taille
    parce que là tu demande d'imprimer l'image à la taille de l'image
    mais si la feuille est plus petite que l'image (surement le cas ici) il faut la réduire
    tu peux te fier au printablearea
    et donc avec quelques produits en croix on peut obtenir la taille redimensionnée
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #17
    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
    Avant de m'y mettre, j'aurais juste besoin de petites précisions. Je ne sais pas ce qu'est une surcharge, puis je avoir une toute petite définition ou explication.
    Quant aux termes image et feuille, il faut les prendre au sens littéral(image pour la partie imprimé et feuille pour le support papier) ou ces termes ont d'autres acceptions?

    Pour le printablearea je vais aller voir sur MSDN.
    Merci

  18. #18
    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
    image c'est une image
    feuille c'est une feuille de papier
    et form c'est une fenetre



    vb.net est un langage orienté objet, il permet donc plein de petites choses sympathiques comme l'héritage, le polymorphisme, les surcharges etc...

    on parle de surcharge lors de l'écriture de plusieurs méthodes avec le meme nom mais des paramètres différents (en nombre ou type)

    DrawImage est écrite 30 fois dans la classe graphics, et il y a une version qui demande un destRect et un sourceRect, qui permettent de définir le rectangle d'origine et le rectangle voulu (ca resize donc à la taille voulue)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  19. #19
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Pour plus d'infos sur DrawImage : http://msdn.microsoft.com/fr-fr/libr...drawimage.aspx

    Je te conseillerais tout de même de potasser un minimum de docs sur la programmation orientée objet, vu que c'est ce que tu fais, et n'hésite pas à faire un tour sur MSDN, qui est la doc technique du framework .net
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  20. #20
    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
    Je suis en plein dedans et miracle: Il existe bien une formule magique.

    Faire glisser PrintForm, situé dans Visual Basic PowerPacks de la boite d'outils, dans le formulaire et avec simplement ce qui suit, on obtient le résultat souhaité.
    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
    Public Class Form1
     
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ' le click sur le bouton lance
     
            PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.ClientAreaOnly)
     
            PrintDialog1.ShowDialog()
            'le gestionnaire d'impression standard (celui installé avec votre imprimante en général)
     
            PrintDocument1.Print()
            'lance l'impression au click ok du gestionnaire d'impression
        End Sub
     
    End Class
    voir les explications plus détaillées http://msdn.microsoft.com/fr-fr/library/bb690938.aspx

    ceci dit je vais quand même essayer de comprendre pourquoi avec le code utilisé précédemment, il y a un décalage à l'impression.

    Si à tout hasard vous avez une idée, n'hésiter pas à m'en faire part, soit par mail soit à la suite de cette discussion(je vais attendre un peu avant d'afficher la résolution de ce post).
    Mon but ultime étant tout de même l'apprentissage.


    Probablement à très bientôt!

    Merci à vous pour votre aide.
    Pascal

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