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

Delphi Discussion :

Améliorer la qualité d'impression d'une form


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut Améliorer la qualité d'impression d'une form
    Bonjour,

    Pour un projet je dois imprimer le contenu d'une form (cette form contient elle même des TMemo et TEdit).

    J'arrive à bien l'imprimer à la taille et mise en page voulue (en utilisant GetFormImage puis ensuite Printer.Canvas.StretchDraw) mais le problème est que la qualité d'impression est assez décévente. En effet les polices on un effet d'escalier assez prononcé.

    J'ai réussi à identifier la source du problème qui vient de GetFormImage qui fournit un TBitmap de mauvaise qualité.

    Existe-t-il d'autres méthodes pour imprimer une form en fournissant une impression de meilleure qualité ?

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Non, il n'y a pas et GetFormImage te donne la meilleure image que tu puisses avoir (résolution en X et en Y de ton image = taille de ta fiche).

    En effet, ta fiche fait admettons 640x480

    Le Canvas de ton imprimante (qui dépend de sa résolution) en fait admettons 3600x2800 (c'est fictif mais c'est l'ordre de garandeur qui compte...)

    Donc en gros, un pixel de ta fiche sera "étalé" sur un carré de 60x60 pixels de ton imprimante. Sachant que si tu est en 600dpi, un pixel de ta fiche fera (toujours à la louche ), 25mm de cotés !

    Bref, c'est normal.

    Ce que tu peux toujours essayer de faire via la méthode "PainTo(DC:HDC)" de ta fiche, c'est de faire dessiner ta fiche sur un TMetaFile puis de copier le dit TMetafile sur le canvas de ton imprimante.

    Comme Le TMetaFile représente ses données sous forme vectorielle, tu devrais te retrouver avec une qualité d'image nettement accrue lors du StrechDraw :

    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
     
    begin
      MonMetafile :=TMetafile.Create;
      try  MonMetaFileCanvas:=TMetafileCanvas.Create(MyMetafile,Form1.Canvas.Handle); 
      try
        Form1.PaintTo(MonMetaFileCanvas.handle);
      finally
        MonMetaFileCanvas.Free;
      end;
    finally
        MonMetaFile.Free;
    end;
    Printer.BeginDoc;
    ...
    Printer.Canvas.StretchDraw(Rect(0,0,Printer.pageWidth,Printer.pageHeight),MonMetaFile);
    ...
    Printer.EndDoc;
    Voilà le principe...
    Bidouilleuse Delphi

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Merci pour ta réponse, j'ai utilisé cette méthode ça pixelise carrément moins

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impression d'une form
    Par breizh44 dans le forum Débuter
    Réponses: 5
    Dernier message: 06/03/2008, 18h26
  2. Probleme d'impression d'une Form
    Par andreditdd dans le forum Delphi
    Réponses: 6
    Dernier message: 29/01/2007, 21h11
  3. [VB6] position de l'impression d'une form sur une feuille
    Par cisnake dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/05/2006, 01h06
  4. Impression d'une form avec controle MSHFlexGrid
    Par felix14 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/01/2006, 17h59
  5. [VBA-E]Impression d'une form
    Par preverse dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/10/2005, 14h19

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