Perte de qualité à l'impression

Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
- - Dernière réponse :  Utilisateur anonyme - 25 mai 2013 à 17:52
Bonjour à tous,

j'ai un problème concernant l'impression d'une image,
j'ai trouvé quelques liens sur internet mais aucun n'a résolu mon problème...

J'essaye d'imprimer une image mais je perds toujours en qualité peu importe les options que je mets pour mon objet graphics...

Voici mon code :

 

    Private WithEvents PageImprimée As New Printing.PrintDocument

    Private Sub PBImprimer_Click(sender As System.Object, e As System.EventArgs) Handles PBImprimer.Click


        PrintDialog1.Document = PageImprimée
        PrintDialog1.AllowSomePages = True
        PrintDialog1.ShowHelp = True
        PrintDialog1.Document = PageImprimée

        If PrintDialog1.ShowDialog = DialogResult.OK Then
            PageImprimée.Print()
        End If
    End Sub

    Private Sub document_PrintPage(ByVal sender As Object, _
   ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
       Handles PageImprimée.PrintPage

e.graphics.Clear(Color.White)
e.graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
e.graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
e.graphics.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
e.graphics.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
e.graphics.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
e.graphics.PageUnit = GraphicsUnit.Display

Tableau.DrawToBitmap(ImageTableau, New Rectangle(0, 0, Tableau.Width, Tableau.Height))

e.graphics.DrawImage(ImageTableau, New Rectangle(TableauL, TableauT, TableauW, TableauH))

    End Sub

       



Sachant que Tableau est un datagridview avec plusieurs lignes et colonnes et du texte à l'intérieur

A l'impression, j'obtiens un tableau flou, alors que lorsque j'imprime du texte, ou une image de grande taille que je rétrécie, j'obtiens une impression très nette...

Merci d'avance pour vos réponses, et si je n'ai pas été clair je peux évidemment apporter des précisions.
Afficher la suite 

9 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Bonjour,
Ce sont là les inconvénients de la pixelisation de texte, à éviter.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Bonjour ucfoutu,

merci de ta réponse

Je n'ai pas trop compris, tu parles d'une des options du graphics qui n'est pas bonne ?
Commenter la réponse de djedjeska
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Non ! Je dis que ton code pixelise du texte et qu'un tel procédé (image de texte) ne sera jamais de "qualité" !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
Salut,

Malheureusement, tu ne montres pas la façon avec laquelle tu initialises ton bitmap 'ImageTableau'.
Voir les différents constructeurs de la classe bitmap et notamment celui qui te permet d'enter un paramètre PixelFormat.

Un bonjour à ucfoutu
Commenter la réponse de Utilisateur anonyme
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
ucfoutu : paradoxalement le texte sort d'une qualité extrêmement bonne, mais c'est pour l'image que j'ai un problème...

banana32 : je me contente de la créer de la façon la plus basique possible... :

Dim ImageTableau as new bitmap(TailleW, TailleH)


Y a t-il une autre méthode ?

Merci de vos réponses
Commenter la réponse de djedjeska
0
Merci
Tu peux rajoute un 3eme paramètre (PixelFormat) dans ce constructeur afin d'augmenter la résolution.
De plus, tu redimensionne deux fois ce bitmap. Une première fois à la taille de ton contrôle, et une deuxième fois aux tailles TableauW et TableauH. Je pense que la perte vient de là. Essaie de dimensionner directement à la taille souhaitée pour l'impression.
Commenter la réponse de Utilisateur anonyme
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Je vais essayer pour le paramètre PixelFormat

Par contre pour ce qui est des dimensions, lorsque je le redimensionne la première fois, j'utilise sa taille d'origine, et lorsque je le dessine sur ma page finale, je garde également sa dimension (je ne l’agrandis pas ni ne le réduis)...

Le premier dessin vient du fait que je dois récupérer l'image d'un datagridview... Je n'ai pas d'autre choix que de faire drawtobitmap

Le second dessin sert à appliquer l'image obtenue sur ma page à imprimée.

Tableau DataGridView => dessiné sur Bitmap Tableau => dessinée sur feuille finale à imprimer

J'essaye le PixelFormat et je vous tiens au courant
Commenter la réponse de djedjeska
0
Merci
Je n'ai pas d'autre choix que de faire drawtobitmap
Ca c'est sûr, mais autant donner au bitmap en question la taille voulue pour l'impression : drawtobitmap(bitmap_image, rectangle_impression). Tu n'auras plus qu'à utiliser e.graphics.drawimage(bitmap_image, point) pour l'impression.
Commenter la réponse de Utilisateur anonyme
0
Merci
Tu as raison, je viens de tester DrawToBitmap et ce n'est pas possible. Donc je n'ai plus d'idée.
Commenter la réponse de Utilisateur anonyme