Perte de qualité à l'impression

Signaler
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
-
 Utilisateur anonyme -
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.

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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.
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

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 ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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.

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
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

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

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.
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

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

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.

Tu as raison, je viens de tester DrawToBitmap et ce n'est pas possible. Donc je n'ai plus d'idée.