impression differente de l'ecran

impression differente de l'ecran - Java - Programmation

Marsh Posté le 10-08-2004 à 13:42:57    

Bonjour a tous!
 
Dans mon application je dessine un plan grace a la classe Graphics et ses methodes. mais lorsque j'imprime un JPanel, il y a qq differences avec ce qui est affiché a l'ecran: qq decalages.
 
voici mon code:
 

Code :
  1. public void imprimer() {
  2.     //la methode qui lance l'impression.
  3.  PrinterJob printJob = PrinterJob.getPrinterJob();
  4.  printJob.setPrintable(this);
  5.  //ouvre la fenetre de choix de l'imprimante
  6.  boolean onDoitImprimer = printJob.printDialog();
  7.        //onDoitImprimer est true si l'utilisateur a cliqué sur ok
  8.  if (onDoitImprimer == true) {
  9.   try {
  10.    printJob.print();
  11.   }
  12.   catch (Exception PrintException) {
  13.    System.err.println("PRINT_EXCEPTION" );
  14.   }
  15.  }
  16. }
  17. public int print(Graphics g, PageFormat pf, int pi)
  18.  throws PrinterException {
  19.         //la methode print().
  20.  System.out.println("Impression..." );
  21.         //ca c'est du bricolage pour imprimer en paysage
  22.         //j'y suis pas arrivé autrement mais la n'est pas le pb
  23.  Graphics2D g2 = (Graphics2D)g;
  24.  g2.rotate(Math.PI / 2, 212, 310);
  25.  g2.scale(0.90, 0.82);
  26.  if (pi >= 1) {
  27.   return Printable.NO_SUCH_PAGE;
  28.  }
  29.         //zoneAImprimer est un container avec des JPanel
  30.  zoneAImprimer.paint(g2);
  31.         //et donc c'est si je fais un paint pour afficher nonAaImprimer ou si
  32.         // je le fais dans print ca me donne pas toujours le meme resultat
  33.         // a l'ecran et sur la feuille...
  34.  return Printable.PAGE_EXISTS;
  35. }


 
Quelqu'un a deja remarqué ca? vous avezue idee de quoi ca peut venir?


Message édité par ruready le 10-08-2004 à 13:45:30
Reply

Marsh Posté le 10-08-2004 à 13:42:57   

Reply

Marsh Posté le 10-08-2004 à 13:46:28    

ruready a écrit :

Bonjour a tous!
 
Dans mon application je dessine un plan grace a la classe Graphics et ses methodes. mais lorsque j'imprime un JPanel, il y a qq differences avec ce qui est affiché a l'ecran: qq decalages.
 
voici mon code:
 

Code :
  1. public void imprimer() {
  2.     //la methode qui lance l'impression.
  3.  PrinterJob printJob = PrinterJob.getPrinterJob();
  4.  printJob.setPrintable(this);
  5.  //ouvre la fenetre de choix de l'imprimante
  6.  boolean onDoitImprimer = printJob.printDialog();
  7.        //onDoitImprimer est true si l'utilisateur a cliqué sur ok
  8.  if (onDoitImprimer == true) {
  9.   try {
  10.    printJob.print();
  11.   }
  12.   catch (Exception PrintException) {
  13.    System.err.println("PRINT_EXCEPTION" );
  14.   }
  15.  }
  16. }
  17. public int print(Graphics g, PageFormat pf, int pi)
  18.  throws PrinterException {
  19.         //la methode print().
  20.  System.out.println("Impression..." );
  21.         //ca c'est du bricolage pour imprimer en paysage
  22.         //j'y suis pas arrivé autrement mais la n'est pas le pb
  23.  Graphics2D g2 = (Graphics2D)g;
  24.  g2.rotate(Math.PI / 2, 212, 310);
  25.  g2.scale(0.90, 0.82);
  26.  if (pi >= 1) {
  27.   return Printable.NO_SUCH_PAGE;
  28.  }
  29.         //zoneAImprimer est un container avec des JPanel
  30.  zoneAImprimer.paint(g2);
  31.         //et donc c'est si je fais un paint pour afficher zoneAImprimer ou si
  32.         // je le fais dans print ca me donne pas toujours le meme resultat
  33.         // a l'ecran et sur la feuille...
  34.  return Printable.PAGE_EXISTS;
  35. }


 
Quelqu'un a deja remarqué ca? vous avezue idee de quoi ca peut venir?

Reply

Marsh Posté le 10-08-2004 à 13:47:55    

Désolé pour les 2 posts, j'ai merdé!

Reply

Marsh Posté le 10-08-2004 à 14:08:48    

Essaye de rajouter ca au debut de ton programme:

Code :
  1. System.setProperty("sun.java2d.print.pipeline", "pdl" );


---------------
Light is right
Reply

Marsh Posté le 13-08-2004 à 07:16:37    

ok, merci.
 
Mais ça fait quoi en fait?... j'aime bien comprendre ce que je fais ;-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed