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

C++Builder Discussion :

Problème d'impression


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Problème d'impression
    Salut,

    J'essaye d'imprimer une image que je mets dans le Canvas d'une TPrinter.
    Voici un bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Imprimante->BeginDoc();
            Imprimante->Canvas->Draw(0,0,Ecran->Picture->Graphic);
            Imprimante->EndDoc();
    Mais le problème, c'est que rien ne s'imprime. Pourtant la fenêtre de la liste d'attente de l'imprimante s'ouvre.

    Si quelqu'un peut m'aider:
    IngBen

  2. #2
    Invité
    Invité(e)
    Par défaut Impression
    Déjà, il faut inclure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <Printers.hpp>
    Ensuite, tu peux t'inspirer de ces bouts de code issus d'un de mes programmes...
    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
     
      TPrinter* pPrntr = Printer();
     
      // Préparation à l'impression
      nLargeurPage = pPrntr->PageWidth;
      nHauteurPage = pPrntr->PageHeight;
      pPrntr->Title = strcTitrePapier;
      pPrntr->Canvas->Font->Name = "Courier New";
      pPrntr->Canvas->Font->Color = clBlack;
      nHauteurCaractere = pPrntr->Canvas->TextHeight("hp");
      nMargeGauche = nLargeurPage / 15;
      nMargeHaute = nHauteurPage / 10;
      nNbLignesParPage = (nHauteurPage - (2 * nMargeHaute)) /  nHauteurCaractere;
      //---- Début
      pPrntr->BeginDoc();
     
      //---- Pour écrire
      nYEcriture = nMargeHaute + nNumLigne * nHauteurCaractere;
      pPrntr->Canvas->TextOut(nMargeGauche + nLevel * ncTailleIndentation,
                                     nYEcriture,
                                     strLigne);
     
      //--- Pour insérer un saut de page
      if (nNumLigne > nNbLignesParPage)
      {
            pPrntr->NewPage();
      }
     
      //---- Pour déclencher l'impression :
      pPrntr->EndDoc();
    Bon courage,

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci Kaji pour tes infos. Mais dans le cas présent, le problème vient du fait que je veux imprimer une image. Et je n'arrive pas à la copier sur le Canvas d'un TPrinter. J'ai aussi essayer avec CopyRect mais rien à faire.
    IngBen

  4. #4
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    J'ai eu le même probleme que toi IngBen, que j'ai résolut en affichant l'image dans une TForm cachée et en appelant la méthode Print() de cette form

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 81
    Points
    81
    Par défaut
    Utilise StretchDraw, ça fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    &#123;
      TPrinter* Imprimante = Printer&#40;&#41;;
     
      Graphics&#58;&#58;TBitmap *pBitmap = new Graphics&#58;&#58;TBitmap&#40;&#41;;
      AnsiString FileName = "MonFichier.bmp";
     
      pBitmap->LoadFromFile&#40;FileName&#41;;
      pBitmap->Transparent = true;
      TRect r = Rect&#40;400, 400, 10 * pBitmap->Width, 10 * pBitmap->Height&#41;; //Ici, il faudra calculer la taille de ton rectangle en fonction du rapport résolution écran / imprimante
     
      Imprimante->BeginDoc&#40;&#41;;
      Imprimante->Canvas->StretchDraw&#40;r, pBitmap&#41;;
      Imprimante->EndDoc&#40;&#41;;
    &#125;
    @+

    Fred

  6. #6
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    Moi ce que j'avais constaté (j'utilisais stretchdraw et j'étais sous C++ Builder 3 à l'époque) c'est que sur certaines imprimantes (la plupart en fait) ca marchait tout le temps tres bien, et sur d'autres ca foirait de temps en temps, "aléatoirement", sans qu'on sache pourquoi... alors que TForm::Print() marche tout le temps. Allez savoir pourquoi...

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    En fait, si j'avais mieux lu l'aide, je n'aurais pas posé la question. Il est bien spécifié que Draw, StretchDraw... ne fonctionne pas très bien. Donc je préfère me débrouiller autrement pour être sur que ça marche partout.
    Merci à tous pour votre aide.
    IngBen

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 81
    Points
    81
    Par défaut
    Va voir sur le site de Reisdorph (www.reisdorph.com), et télécharges les exemples de code de mars et avril 2001. Je penses que ça correspond exactement à ce que tu cherches.

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

Discussions similaires

  1. Problème d'impression de caractère (gras) sur matricielle
    Par Tiefolo Salia dans le forum Langage
    Réponses: 1
    Dernier message: 02/09/2005, 00h36
  2. problème d'impression
    Par davedenice dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/07/2005, 17h57
  3. [PowerBuilder] Problème d'impression datawindow composite
    Par jpdar dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 17/05/2005, 14h33
  4. Réponses: 16
    Dernier message: 17/03/2005, 14h54
  5. [Rave] problème d'impression
    Par romstarr dans le forum Rave
    Réponses: 2
    Dernier message: 09/06/2004, 16h48

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